通过 centos7 基础镜像,创建自定义镜像,包含 jdk + tomcat + 应用程序 war 包
Dockerfile 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 from centos:7 MAINTAINER "AndyChen<552087293@qq.com>" ADD tomcat.tar.gz /usr/local / ADD jdk-8u381-linux-x64.tar.gz /usr/local / RUN sed -i 's|mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-* RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* RUN yum makecache fast RUN yum -y install wget ENV TZ "Asia/Shanghai" ENV JAVA_HOME /usr/local /jdk1.8.0_381 ENV CATALINA_HOME /usr/local /tomcat ENV PATH $PATH :$JAVA_HOME /bin:$CATALINA_HOME /bin EXPOSE 8080 VOLUME ["/usr/local/tomcat/logs" ] CMD ["catalina.sh" ,"run" ]
打包应用与 tomcat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cd /root/soft/tomcat/webapps/ROOTrm -rf * jar -xvf /root/soft/taoban-jd-luck-client-1.0.war rm -rf /root/centos-tomcat/tomcat.tar.gz cd /root/softtar -czvf tomcat.tar.gz tomcat mv tomcat.tar.gz /root/centos-tomcat/ rm -rf taoban-jd-luck-client-1.0.war
构建镜像
需要把 Dockerfile 与用到的文件放到一个目录下,在该目录下运行 docker build 命令
在执行创建命令之前,需要确保已经摘取过 centos7 镜像,拉取命令:docker pull centos:7
1 2 cd /root/centos-tomcatdocker build -t tomcat:wxjx .
运行 docker
81 是 nginx 服务配置里负载指向的端口,就是 tomcat 放出的端口
交互方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 docker stop tomcat-tb-admin docker rm tomcat-tb-admin docker run -it \ -p 81:8080 \ --name tomcat-tb-admin \ --restart=always \ -v /root/app/tomcat-logs-tb-admin:/usr/local /tomcat/logs \ -v /root/app/config-tb.properties:/acs/conf/config.properties \ tomcat-tb-admin bash catalina.sh start catalina.sh stop
后台方式 1 2 3 4 5 6 7 8 9 docker rm tomcat docker run -d \ -p 81:8080 \ --name tomcat-tb-admin \ --restart=always \ -v /root/app/tomcat-logs-tb-admin:/usr/local /tomcat/logs \ -v /root/app/config-tb.properties:/acs/conf/config.properties \ tomcat-tb-admin
相关指令
停止容器:stop tomcat-tb-admin
删除已停止的容器:docker rm tomcat-tb-admin
如果不删除,将无法以 --name tomcat-tb-admin
的方式启动容器,会报该名称已经存在的错误
进入运行中的 docker:docker exec -it tomcat /bin/bash
退出运行中的 docker,回到宿主机:exit
,退出后,不会影响 docker 的运行
关于 --restart=
等号后面的参数
localhost 和 127.0.0.1
docker 连接 MySQL,记得一定要写运行 MySQL 的主机 ip,不要写 localhost,也不要写 127.0.0.1,因为 docker 运行起来之后,这两个地址代表的是 docker 实例本身的 ip 地址
通过 docker 运行 nginx,网站配置文件,如果写 localhost 或 127.0.0.1,也是指向运行 nginx 的 docker 实例,并非运行 nginx docker 的宿主机
刚开始接触 docker 的同学,可能会误以为 localhost 和 127.0.0.1 指向宿主机
tomcat 配置参考 apache-tomcat-8.5.92/conf/server.xml
设置编码:在 <Connector port="8080" protocol="HTTP/1.1"
下面添加:URIEncoding="UTF-8"
把 autoDeploy 属性改为 false:<Host name="localhost" appBase="webapps"
改为 <Host name="localhost" appBase="webapps" autoDeploy="false"
配置虚拟目录:在 </Host>
上一行添加 <Context path="" docBase="/usr/local/apache-tomcat-8.5.92/webapps/app/" debug="0"/>
虚拟目录挂载:app 目录也可以直接挂载到宿主机目录,这样部署的时候更方便,更新应用之后,重启 docker 即可完成部署,更直接的方式是重启 docker 中运行的 tomcat
设置编码:apache-tomcat-8.5.92/bin/catalina.sh
JAVA_OPTS 添加 -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
, 修改之后是:JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
相关文章 docker 相关