Docker之:制作一个运行Tomcat服务端的Docker镜像(三)

十二 2021年11月14日 3020 0

前言

如没看过上一章,请点我跳转

上一章我们使用Tomcat镜像搭建了一个WEB服务端。
本章,我们将从零开始搭建一个Tomcat服务端。大体需要以下步骤:

  1. 在容器中安装一个系统(我使用Ubuntu)
  2. 在容器中安装JDK并配置环境变量以运行Tomcat
  3. 在容器中拷贝Tomcat

既然目标已经明确,那么我们就开始吧。

初始化项目

下载文件

在项目开始之前,我们需要下载所需的文件:

JDK 1.8
Tomcat 9

解压文件

将JDK和Tomcat的压缩包解压,并新建一个文件夹用于存放该镜像所需的文件,把解压后的文件夹拷贝到该文件夹中。

1 adler@localhost ~/dockerTomcat: tar -zxvf jdk-8u201-linux-x64.tar.gz
2 adler@localhost ~/dockerTomcat: tar -zxvf apache-tomcat-9.0.13.tar.gz
3 adler@localhost ~/dockerTomcat: ls
4 apache-tomcat-9.0.13 jdk1.8.0_201

Dockerfile

Dockerfile就像一个脚本语言,它用于告知Docker如何制作一个镜像。让我们在Docker目录中新建一个Dockerfile文件,编辑内容:

1 FROM ubuntu
 2 MAINTAINER AdlerED
 3 ENV REFRESHED_AT 2019-04-14
 4 
 5 WORKDIR /usr
 6 RUN mkdir jdk
 7 RUN mkdir tomcat
 8 ADD jdk1.8.0_201 /usr/jdk
 9 ADD apache-tomcat-9.0.13 /usr/tomcat
10 
11 ENV JAVA_HOME=/usr/jdk
12 ENV JRE_HOME=$JAVA_HOME/jre
13 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
14 ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
15 
16 EXPOSE 8080
17 ENTRYPOINT ["/usr/tomcat/bin/catalina.sh","run"]

看不懂?没关系,这里有常用命令解释:

1 FROM 使用镜像
 2 RUN 执行命令
 3 ADD 添加文件
 4 COPY 拷贝文件
 5 CMD 执行命令
 6 EXPOSE 执行命令
 7 WORKDIR 指定路径
 8 MAINTAINER 维护者
 9 ENV 设定环境变量
10 USER 指定路径
11 VOLUME 逻辑卷挂载点

这样,我们就在Ubuntu的基础上安装了JDK并配置好了环境。

制作镜像

保存Dockerfile。下面让我们构造一个Docker镜像:

注意:命令中有一个".",表示当前目录下的所有文件/文件夹。

1 adler@localhost ~/dockerTomcat: docker build -t tom1 .
 2 Sending build context to Docker daemon    465MB
 3 Step 1/14 : FROM ubuntu
 4 latest: Pulling from library/ubuntu
 5 898c46f3b1a1: Already exists
 6 63366dfa0a50: Already exists
 7 041d4cd74a92: Already exists
 8 6e1bee0f8701: Already exists
 9 Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
10 Status: Downloaded newer image for ubuntu:latest
11 ---> 94e814e2efa8
12 Step 2/14 : MAINTAINER AdlerED
13 ---> Running in 0d8881a48673
14 Removing intermediate container 0d8881a48673
15 ---> 096a71fce35c
16 Step 3/14 : ENV REFRESHED_AT 2019-04-14
17 ---> Running in cc70cde8bbdf
18 Removing intermediate container cc70cde8bbdf
19 ---> 5e729baf8ba6
20 Step 4/14 : WORKDIR /usr
21 ---> Running in ffafbb0c2f39
22 Removing intermediate container ffafbb0c2f39
23 ---> 5c67d2c834b8
24 Step 5/14 : RUN mkdir jdk
25 ---> Running in 456ba09c5f78
26 Removing intermediate container 456ba09c5f78
27 ---> 4b20a82e75b2
28 Step 6/14 : RUN mkdir tomcat
29 ---> Running in 4e37fa2c7f1e
30 Removing intermediate container 4e37fa2c7f1e
31 ---> 36be7992366e
32 Step 7/14 : ADD jdk1.8.0_201 /usr/jdk
33 ---> b73582ceb345
34 Step 8/14 : ADD apache-tomcat-9.0.13 /usr/tomcat
35 ---> de37ef37b5f0
36 Step 9/14 : ENV JAVA_HOME=/usr/jdk
37 ---> Running in 2fb661484354
38 Removing intermediate container 2fb661484354
39 ---> 65486f651010
40 Step 10/14 : ENV JRE_HOME=$JAVA_HOME/jre
41 ---> Running in 589b25aee5c9
42 Removing intermediate container 589b25aee5c9
43 ---> 21ff9fc63c15
44 Step 11/14 : ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
45 ---> Running in 0041fb914b69
46 Removing intermediate container 0041fb914b69
47 ---> d4e69f027c43
48 Step 12/14 : ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
49 ---> Running in dca277cebf53
50 Removing intermediate container dca277cebf53
51 ---> 1d17efbfa7f7
52 Step 13/14 : EXPOSE 8080
53 ---> Running in 3c34d45b2b12
54 Removing intermediate container 3c34d45b2b12
55 ---> cb23d57bbad3
56 Step 14/14 : ENTRYPOINT ["/usr/tomcat/bin/catalina.sh","run"]
57 ---> Running in a568509006bf
58 Removing intermediate container a568509006bf
59 ---> c3f64777810c
60 Successfully built c3f64777810c
61 Successfully tagged tom1:latest

这样,我们就成功将Tomcat制作为了一个镜像。让我们运行它:

1 adler@localhost ~/dockerTomcat: docker run -it -p 8080:8080 tom1

不出意外的话,访问http://localhost:8080,你应该可以看到Tomcat的默认页了。

后语

此时,我们成功搭建了一个Tomcat的运行环境,它基于Ubuntu。至此,你已经成功入门了Docker!

Last Updated: 2021/11/14 19:36:16
Java之耦合性:什么是耦合性和内聚性?用编程语言实例讲解! Docker之:简单部署一个Tomcat服务并发布内容(二)