使用 Dockerfile 构建 Tomcat 镜像
来源:靑龍一笑的博客 作者:靑龍一笑 发布时间:2021-04-14 09:09:20 点击量:568 评论:0
准备 Tomcat、JDK,以及 Dockerfile,放在同一个目录下:
[root@docker-client tomcat]# ls
apache-tomcat-8.5.63.tar.gz Dockerfile jdk-7u80-linux-x64.tar.gz
apache-tomcat-8.5.63.tar.gz Dockerfile jdk-7u80-linux-x64.tar.gz
其中,Dockerfile 的内容如下:
[root@docker-client tomcat]# cat Dockerfile
# 基础镜像
FROM docker-registry:5000/centos:7
# 准备 Tomcat 和 JDK
ADD apache-tomcat-8.5.63.tar.gz jdk-7u80-linux-x64.tar.gz /usr/local/
# 暴露 Tomcat 的 8080 端口
EXPOSE 8080
# 设置环境变量
ENV JAVA_HOME /usr/local/jdk1.7.0_80
ENV CLASSPATH $JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.63
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.63
ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib:$PATH
# 启动容器时,启动 Tomcat
CMD ["catalina.sh", "run"]
# 基础镜像
FROM docker-registry:5000/centos:7
# 准备 Tomcat 和 JDK
ADD apache-tomcat-8.5.63.tar.gz jdk-7u80-linux-x64.tar.gz /usr/local/
# 暴露 Tomcat 的 8080 端口
EXPOSE 8080
# 设置环境变量
ENV JAVA_HOME /usr/local/jdk1.7.0_80
ENV CLASSPATH $JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.63
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.63
ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib:$PATH
# 启动容器时,启动 Tomcat
CMD ["catalina.sh", "run"]
这里用到的基础镜像“docker-registry:5000/centos:7”是我从私有仓库中导出的,有关私有仓库的搭建,详见我的另一篇文章《docker 搭建本地 Registry》。
使用如下命令构建镜像:
[root@docker-client tomcat]# docker image build -t tomcat:8.5.36 .
Sending build context to Docker daemon 164MB
Step 1/9 : FROM docker-registry:5000/centos:7
---> 8652b9f0cb4c
Step 2/9 : ADD apache-tomcat-8.5.63.tar.gz jdk-7u80-linux-x64.tar.gz /usr/local/
---> cb6c91bc62e1
Step 3/9 : EXPOSE 8080
---> Running in 10eeeaa9ae68
Removing intermediate container 10eeeaa9ae68
---> 017f6fe6caec
Step 4/9 : ENV JAVA_HOME /usr/local/jdk1.7.0_80
---> Running in 031d6be63d6a
Removing intermediate container 031d6be63d6a
---> 631e04424e8d
Step 5/9 : ENV CLASSPATH $JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
---> Running in 45f9cf26557d
Removing intermediate container 45f9cf26557d
---> c1ec6b522cde
Step 6/9 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.63
---> Running in c53af60e5f42
Removing intermediate container c53af60e5f42
---> f6591ce0cc11
Step 7/9 : ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.63
---> Running in e4148cc5773a
Removing intermediate container e4148cc5773a
---> acf7d581a54d
Step 8/9 : ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib:$PATH
---> Running in f9ae5dc7c8d3
Removing intermediate container f9ae5dc7c8d3
---> 736ee980591b
Step 9/9 : CMD ["catalina.sh", "run"]
---> Running in a16e956702f3
Removing intermediate container a16e956702f3
---> 432cd9be7abf
Successfully built 432cd9be7abf
Successfully tagged tomcat:8.5.36
Sending build context to Docker daemon 164MB
Step 1/9 : FROM docker-registry:5000/centos:7
---> 8652b9f0cb4c
Step 2/9 : ADD apache-tomcat-8.5.63.tar.gz jdk-7u80-linux-x64.tar.gz /usr/local/
---> cb6c91bc62e1
Step 3/9 : EXPOSE 8080
---> Running in 10eeeaa9ae68
Removing intermediate container 10eeeaa9ae68
---> 017f6fe6caec
Step 4/9 : ENV JAVA_HOME /usr/local/jdk1.7.0_80
---> Running in 031d6be63d6a
Removing intermediate container 031d6be63d6a
---> 631e04424e8d
Step 5/9 : ENV CLASSPATH $JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
---> Running in 45f9cf26557d
Removing intermediate container 45f9cf26557d
---> c1ec6b522cde
Step 6/9 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.63
---> Running in c53af60e5f42
Removing intermediate container c53af60e5f42
---> f6591ce0cc11
Step 7/9 : ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.63
---> Running in e4148cc5773a
Removing intermediate container e4148cc5773a
---> acf7d581a54d
Step 8/9 : ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib:$PATH
---> Running in f9ae5dc7c8d3
Removing intermediate container f9ae5dc7c8d3
---> 736ee980591b
Step 9/9 : CMD ["catalina.sh", "run"]
---> Running in a16e956702f3
Removing intermediate container a16e956702f3
---> 432cd9be7abf
Successfully built 432cd9be7abf
Successfully tagged tomcat:8.5.36
列出本地主机镜像:
[root@docker-client tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.5.36 432cd9be7abf 41 seconds ago 525MB
docker-registry:5000/centos 7 8652b9f0cb4c 4 months ago 204MB
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.5.36 432cd9be7abf 41 seconds ago 525MB
docker-registry:5000/centos 7 8652b9f0cb4c 4 months ago 204MB
可以看到 tomcat 镜像已经构建完成。
使用 docker run 命令运行 tomcat 容器:
[root@docker-client tomcat]# docker run -d -p 8080:8080 tomcat:8.5.36
查看容器:
[root@docker-client tomcat]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
141cd674f129 tomcat:8.5.36 "catalina.sh run" 17 seconds ago Up 15 seconds 0.0.0.0:8080->8080/tcp gracious_varahamihira
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
141cd674f129 tomcat:8.5.36 "catalina.sh run" 17 seconds ago Up 15 seconds 0.0.0.0:8080->8080/tcp gracious_varahamihira
由于已经做了端口映射,可以直接在浏览器中访问:
版权所有 © 2005-2023 靑龍一笑的博客 Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.