docker通过dockFile定制tomcat8镜像,启动tomcat容器 准备工作: 我们服务器上会通过docker安装mysql,nginx,tomcat等等应用,而这些应用需要共享某些目录,这样才能方便使用文件,以及nginx才可以做文件映射等。 前两篇安装mysql、nginx共享的目录是/alidata,因此我们在/alidata/myDocker/tomcat下新建tomcat需要的server.xml配置文件,并把war文件放进来。 进入/alidata/myDocker/tomcat下,准备好server.xml, 进入宿主机/etc目录下,复制localtime,timezone文件到/alidata/myDocker/tomcat目录,防止容器时间与宿主机时间不一致 然后新建新建一个Dockerfile文件,文件名”Dockerfile”,内容如下: # First docker file from tomcat:8.5.34-jre8-slim # VERSION 1.0 # Author: coding云 #基础镜像 FROM tomcat:8.5.34-jre8-slim #作者,使用LABEL指令,可以为镜像设置元数据,例如镜像创建者或者镜像说明。旧版的Dockerfile语法使用MAINTAINER指令指定镜像创建者,但是它已经被弃用了。 LABEL MAINTAINER coding云 <jack_bj@163.com> #定义配置文件目录 ENV WORK_PATH /usr/local/tomcat/conf #定义war运行目录 ENV WAR_PATH /usr/local/tomcat/webapps #定义要替换的server.xml文件名 ENV SERVER_CONF_FILE_NAME server.xml #删除原文件server.xml,删除webapps目录下的自带项目 RUN rm -rf $WORK_PATH/$SERVER_CONF_FILE_NAME && rm -rf $WAR_PATH/* #复制文件server.xml,以及时区文件,防止容器中时间与宿主机时间不一致 COPY ./$SERVER_CONF_FILE_NAME $WORK_PATH/ COPY ./localtime /etc/ COPY ./timezone /etc/ 以上就是Dockerfile的全部内容,几个关键点如下: 1. FROM FROM tomcat:8.5.34-jre8-slim的意思是使用tomcat:8.5.34-jre8-slim作为基础镜像,8.5.34-jre8-slim是tag,slim代表该tag的镜像更加精简节省空间(镜像版本需要去https://hub.docker.com/,在explore下查找镜像); 2. 使用了tomcat:7.0.77-jre8作为基础镜像后,通过RUN rm命令将原有的server.xml和webapps目录下的默认项目删除; 3. 将我们准备工作中准备的server.xml文件复制到原来的conf目录下,这样就用取代了原有的文件; 进入/alidata/myDocker/tomcat目录下: 有3个文件 Dockerfile server.xml codingYun-web.war ( 该war是需要运行在tomcat的war包,server.xml里配置了Context节点 <Context path="" reloadable="true" docBase="/alidata/myDocker/tomcat1/codingYun-web.war"/> 当有新的war包版本需要更新时,直接上传新版war到/alidata/myDocker/tomcat,重新运行容器即可 ) 执行命令生成镜像: docker build -t jack-tomcat8jre8:1.0 . 镜像做好之后我们就创建运行应用的容器: docker run -itd\ --name tomcat_weishi_01 \ -p 8090:8080 \ -v /alidata:/alidata \ jack-tomcat8jre8:1.0 解释一下上面命令的含义: run -itd:在docker中运行一个带交互式的且能后台运行的容器,如果运行后发现tomcat没有正常启动,可以去掉该参数重新运行,这样能看到日志。 --name nginx:给容器命名为nginx,注意name前面有两个小横杠,你也可以自己随意命名。 -p 8080:8080:这里是指将容器的8080端口映射到主机的8080端口,冒号前面指的是主机,后面指的是容器。 -v: 是宿主机的项目静态文件目录挂载到容器的目录下 -v: 示例表示把宿主机的/alidata 目录挂载到容器的/alidata目录下;这样容器就可以与宿主机共享alidata目录下的文件了,比如项目静态文件等。 jack-tomcat8jre8:1.0: 示例表示用tag为1.0的jack-tomcat8jre8镜像创建容器
附: 自动执行的shell脚本
(责任编辑:IT) |