本文介绍了基于华为欧拉操作系统(openEuler)制作一个容器镜像(docker image),并且完成部署tomcat+war的全部过程,生成的Dockerfile可以用于部署此类J2EE应用。
1. 环境准备
- 安装docker,自行百度。
- 访问https://www.oracle.com/java/technologies/downloads/,下载所需的JDK for linux-x64,这里使用的是jdk-8u351,注意要下载
.tar.gz
的文件。 - 访问https://tomcat.apache.org/,下载所需的Tomcat,这里使用的是Tomcat 8.5.87,注意要下载
.tar.gz
的文件。 - 准备你自己应用软件的war包,这里假定是
test.war
。
上述文件需要和Dockerfile放在同一个目录中。
2. 编辑Dockerfile
# 基础镜像,这里采用华为欧拉openeuler 22.03版本
FROM openeuler/openeuler:22.03
# 设置系统编码
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& dnf update -y \
&& dnf upgrade -y \
&& dnf install -y glibc-all-langpacks \
&& echo -e 'export LANG="zh_CN.UTF-8"\nexport LC_ALL="zh_CN.UTF-8"' > /etc/locale.conf \
&& source /etc/locale.conf
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# 安装jdk1.8+tomcat8
# 切换镜像目录,进入/usr目录
WORKDIR /usr
# 在/usr/下创建jdk目录,用来存放jdk文件
RUN mkdir jdk
# 在/usr/下创建tomcat目录,用来存放tomcat
RUN mkdir tomcat
# 将宿主机的jdk目录下的文件拷至镜像的/usr/jdk目录下,docker会自动解压缩
ADD jdk-8u351-linux-x64.tar.gz /usr
RUN mv /usr/jdk1.8.0_351 /usr/jdk1.8
# 将宿主机的tomcat目录下的文件拷至镜像的/usr/tomcat目录下,docker会自动解压缩
ADD apache-tomcat-8.5.87.tar.gz /usr
RUN mv /usr/apache-tomcat-8.5.87 /usr/tomcat8
# 设置环境变量
ENV JAVA_HOME=/usr/jdk1.8
ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
# 将应用程序拷贝到tomcat的webapps目录下
COPY test.war /usr/tomcat8/webapps/test.war
#公开端口
EXPOSE 8080
#设置启动命令
ENTRYPOINT ["/usr/tomcat8/bin/catalina.sh","run"]
3. 编译并运行Dockerfile
启动一个tomcat容器,测试应用是否可以正常启动
docker build -t openeuler8-tomcat8-test:1.0 .
docker run -itd --name test -p 8080:8080 openeuler8-tomcat8-test:1.0
之后使用浏览器访问http://localhost:8080/test,测试应用是否运行正常。