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日志