博客 / 詳情

返回

Docker 入門私人筆記(九)構建 JDK+Tomcat 運行環境鏡像

實戰:製作 docker 鏡像,可以快速部署 tomcat

1. 準備 tomcat 軟件

cd /data/dockerfile/runtime/
mkdir tomcat
cd tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz

2. 準備 Dockerfile

本次直接使用前面製作的鏡像 system/centos:v3 為基礎鏡像來製作,Dockerfile 配置如下:

#Base Image 指定基礎鏡像
FROM system/centos:v3

#Maintainer 鏡像維護者的信息
MAINTAINER lu 13510182959@126.com

#RUN 想讓該鏡像做什麼
RUN yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y && yum clean all

#配置 Java 環境變量
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk

#Tomcat
#ADD 會自動解壓複製到容器裏面的壓縮包
ADD apache-tomcat-8.5.46.tar.gz /usr/local
RUN ln -s /usr/local/apache-tomcat-8.5.46 /usr/local/tomcat

#For Supervisor
ADD tomcat.ini /etc/supervisor.d/tomcat.ini
ENV TOMCAT_HOME /usr/local/tomcat

#Outside port
EXPOSE 22 8080

#CMD 是使用該鏡像啓動的容器要運行的命令
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]

3. 新建 tomcat.ini

tomcat.ini 的配置如下:

[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run
process_name=%(program_name)s
autostart=true

注意:
此時在目錄 /data/dockerfile/runtime/tomcat 下應該有3個文件:

  • apache-tomcat-8.5.46.tar.gz
  • Dockerfile
  • tomcat.ini

4. 製作 tomcat 鏡像

docker build -t runtime/tomcat .

5. 驗證

使用剛剛製造出來的鏡像啓動一個容器

docker run -d --name tomcat-demo -p 8080:8080 -p 8888:22 runtime/tomcat

接下來進行充分的驗證:
確定容器成功運行後,瀏覽器訪問 tomcat 頁面:

http://192.168.100.151:8080

通過 ssh 連接容器:

ssh -p 8888 root@192.168.100.151

在容器內的進程運行,確定 supervisor、sshd、tomcat 均正常且 supervisor 的 PID 是 1:

[root@35672f30384d ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 115684 14816 ?        Ss   12:48   0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root         8  0.0  0.1 112864  4288 ?        S    12:48   0:00 /usr/sbin/sshd -D
root         9  1.4  3.9 4535084 151472 ?      Sl   12:48   0:06 /usr/lib/jvm/java-1.8.0-openjdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/
root        63  0.0  0.1 153152  5988 ?        Ss   12:53   0:00 sshd: root@pts/0
root        65  0.0  0.0  15252  1996 pts/0    Ss   12:53   0:00 -bash
root        78  0.0  0.0  55172  1860 pts/0    R+   12:55   0:00 ps aux

查看 supervisor 狀態可知它管理了兩個進程分別是 sshd 和 tomcat

[root@35672f30384d ~]# supervisorctl status
sshd                             RUNNING   pid 8, uptime 0:09:13
tomcat                           RUNNING   pid 9, uptime 0:09:13
user avatar openresty_xray 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.