1.準備好須要的jdk 和 tomcatjava
kun@ubuntu:~$ cd tomcat-docker/ kun@ubuntu:~/tomcat-docker$ ll total 245232 drwxrwxr-x 4 kun kun 4096 May 6 11:34 ./ drwx------ 4 kun kun 4096 May 6 11:30 ../ -rw-rw-r-- 1 kun kun 14315520 May 5 18:03 apache-tomcat-8.5.34.tar -rw-rw-r-- 1 kun kun 422 May 6 11:30 Dockerfile -rw-rw-r-- 1 kun kun 44921007 May 6 15:37 forms.war drwxr-xr-x 7 kun kun 4096 Dec 16 03:48 jdk/ -rw-rw-r-- 1 kun kun 191817140 May 5 18:03 jdk-8u201-linux-x64.tar.gz drwxrwxr-x 9 kun kun 4096 May 5 18:12 tomcat/
這裏我將jdk和tomcat的tar.gz 包都經過 tar -zxvf解壓了 並經過mv 修改了文件夾名字爲jdk和tomcatlinux
(其實不解壓也能夠,2中說明爲啥我要解壓,爲啥不用解壓而我又先解壓了)web
2.編寫Dockerfile(示例以下)docker
FROM ubuntu:16.04 MAINTAINER ceshi@qq.com COPY ./jdk /usr/local/jdk COPY ./tomcat /tomcat ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib ENV PATH $PATH:$JAVA_HOME/bin ENV CATALINA_OPTS -Xms128m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=512M RUN cd /tomcat/logs && echo "1" >>count.txt ENTRYPOINT /tomcat/bin/startup.sh && tail -F /tomcat/logs/catalina.out
根據顯示的行號來解釋apache
1.咱們製做鏡像的基礎,在ubuntu16.04的系統上構建後續操做ubuntu
2.維護者信息tomcat
3~5.複製當前目錄下的jdk目錄 到容器內部的/usr/local/jdk目錄下 bash
解釋下:app
Dockerfile提供了COPY 和 ADD 兩種方式webapp
COPY : COPY ./jdk /usr/local/jdk #直接原樣拷貝過去
ADD : ADD ./jdk-8u201-linux-x64.tar.gz /usr/local/java #拷貝過去,若是是壓縮包還會自動幫着解壓,原本是好事,可是解壓後文件夾名字一長串,不便於記憶,就直接先解壓好重命名好了再COPY過去
7~13.一看就知道了 經過 ENV 來設置各類環境變量
14.爲了示例RUN的使用, 經過RUN命令,後面就能夠執行各類linux命令
15.表示啓動容器後執行的操做
將上述文件保存爲Dockerfile 注意大小寫,沒有後綴,而後進入到該目錄,執行命令構建鏡像
sudo docker build -t xwg/tomcat:v1 --rm=true .
#若是改變了Dockerfile名字,則須要指定 -f 文件名稱
xwg/tomcat:v1 鏡像的名字及tag, 最後的點表明當前目錄
啓動試試看
sudo docker run -p 8899:8080 --name tomcat_xwg xwg/tomcat:v1
而後問題又來了,容器卻是啓動起來了,可是怎麼把咱們本身的war包丟裏面運行起來呢?
sudo docker cp forms.war tomcat_xwg:/usr/local/tomcat/webapps
forms.war 不解釋
tomcat_xwg:/usr/local/tomcat/webapps 冒號前面爲容器名稱或者id, 冒號後面爲tomcat的webapps全路徑
丟進去就行了,會自動發佈的,不須要咱們再本身去啓動tomcat了,由於容器啓動後tomcat就默認啓動了 Dockerfile最後一行就是啓動tomcat
丟進去後,控制檯就會檢測到,並自動部署
查看docker中tomcat日誌