Dockerfile 实战 Jdk + Tomcat

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-23 09:07   1232   0

文章目录

1、准备好Jdk和Tomcat安装包

2、编写Dockerfile

3、制作镜像

4、启动容器

5、访问测试

6、发布项目(由于做了卷挂载,我们直接在本地编写项目就可以直接发布了)


1、准备好Jdk和Tomcat安装包

注意:

  • 编写 dockerfile 文件,官方命名 Dockerfile,build 会自动寻找这个文件,就不需要 -f 指定了
  • apache-tomcat-8.5.34.tar.gz、jdk-8u241-linux-x64.tar.gz、readme.txt、Dockerfile放在同一目录

2、编写Dockerfile

内容如下:

[root@web build_dockerfile]# vim Dockerfile 
# 指定操作的镜像
FROM centos:1.0

# 维护者信息
MAINTAINER Bertram<1111@qq.com>

# 覆盖相关文件
COPY readme.txt /usr/local/readme.txt

# 将 jdk 和 tomcat 添加到镜像centos的/usr/local/目录下,ADD 命令会自动解压 将tar包解压到这个路径
ADD jdk-8u241-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.34.tar.gz /usr/local/

# 安装一下基本命令
RUN yum -y install net-tools

# 设置默认工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH

# 添加环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_241
ENV JRE_HOME=/usr/local/jdk1.8.0_241/jre
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME/bin
ENV export JAVA_HOME JRE_HOME CLASSPATH  PATH

# 暴露端口8080
EXPOSE 8080

# 容器启动时运行tomcat && 拼接一些参数  tail -F 显示文件新追加的内容
CMD /usr/local/apache-tomcat-8.5.34/bin/catalina.sh run &&  tail -f /usr/local/apache-tomcat-8.5.34/logs/catalina.out

3、制作镜像

执行 docker build 制作镜像:

[root@web build_dockerfile]# docker build -t mytomcat:1.0 .
Sending build context to Docker daemon  204.2MB
Step 1/15 : FROM centos:1.0
 ---> adff76c66068
Step 2/15 : MAINTAINER Bertram<1111@qq.com>
 ---> Running in a00c8bdb7072
Removing intermediate container a00c8bdb7072
 ---> c484a48d21f9
Step 3/15 : COPY readme.txt /usr/local/readme.txt
 ---> e42d2c281f99
Step 4/15 : ADD jdk-8u241-linux-x64.tar.gz /usr/local/
 ---> 94d850a34a0e
Step 5/15 : ADD apache-tomcat-8.5.34.tar.gz /usr/local/
 ---> 3aab0a6211d5
Step 6/15 : RUN yum -y install net-tools
 ---> Running in 4a8e14b65adf
Last metadata expiration check: 0:28:12 ago on Wed Oct 21 02:11:43 2020.
Package net-tools-2.0-0.51.20160912git.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Removing intermediate container 4a8e14b65adf
 ---> f135802e0e58
Step 7/15 : ENV MYPATH /usr/local
 ---> Running in 58e00bc89fc2
Removing intermediate container 58e00bc89fc2
 ---> 496b6f9ac502
Step 8/15 : WORKDIR $MYPATH
 ---> Running in 8bedf4e0d1dc
Removing intermediate container 8bedf4e0d1dc
 ---> 64c45a8045ea
Step 9/15 : ENV JAVA_HOME=/usr/local/jdk1.8.0_241
 ---> Running in 28c14ef91111
Removing intermediate container 28c14ef91111
 ---> ee33621eb0c5
Step 10/15 : ENV JRE_HOME=/usr/local/jdk1.8.0_241/jre
 ---> Running in 81caf68c3e0a
Removing intermediate container 81caf68c3e0a
 ---> 4ac2a64acdbc
Step 11/15 : ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
 ---> Running in 31282e39280b
Removing intermediate container 31282e39280b
 ---> 1697ff0d848d
Step 12/15 : ENV PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME/bin
 ---> Running in ee337673cd93
Removing intermediate container ee337673cd93
 ---> a4fcbb8cd124
Step 13/15 : ENV export JAVA_HOME JRE_HOME CLASSPATH  PATH
 ---> Running in 99e892cf4cfc
Removing intermediate container 99e892cf4cfc
 ---> 4972db655fe2
Step 14/15 : EXPOSE 8080
 ---> Running in fcc5ce81cf94
Removing intermediate container fcc5ce81cf94
 ---> 3ca65caf3597
Step 15/15 : CMD /usr/local/apache-tomcat-8.5.34/bin/catalina.sh run &&  tail -F /usr/local/apache-tomcat-8.5.34/bin/logs/catalina.out
 ---> Running in 88239471f32b
Removing intermediate container 88239471f32b
 ---> 64e6e2af21b3
Successfully built 64e6e2af21b3
Successfully tagged mytomcat:1.0

说明:
-t 设置tag名称, 命名规则registry/image:tag(若不添加版本号,默认latest)
. 表示使用当前目录下的Dockerfile文件(注意语句后面有一个点),如需指定目录,则用 -f

执行 docker images 查看构建的镜像:

4、启动容器

[root@web build_dockerfile]# docker run -p 9080:8080 --name mytomcat -v /data/tomcat/build/test:/usrl/local/apache-tomcat-8.5.34/webapps/test -v /data/tomcat/logs/tomcatlogs:/usrl/local/apache-tomcat-8.5.34/logs -d mytomcat:1.0

说明:
-d 后台运行
--name mytomcat 容器名称
-v /data/tomcat/build/test:/usrl/local/apache-tomcat-8.5.34/webapps/test 挂载当前test项目的运行目录到tomcat下的webapps
--privileged=true 设置拥有容器中的真正的root权限
-p 9080:8080 映射端口(宿主机port : 容器port)
mytomcat:1.0 镜像的名称

执行docker ps 查看进程

进入容器内查看目录

//docker exec -it 容器id /bin/bash
[root@web test]# docker exec -it eef3f1673517  /bin/bash

5、访问测试

输入地址:http://IP+端口号

6、发布项目(由于做了卷挂载,我们直接在本地编写项目就可以直接发布了)

项目示例:项目示例下载

访问 tomcat 服务器内的应用,测试查看是否可以访问到

由上图访问,项目部署成功,访问OK!

—— 励志前行,明天会更好!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP