1.部署tomcat
1.1.下载相关镜像tomcat8.5.20
$ docker pull tomcat:8.5.20
1.2 在/data目录下创建tomcat/webapps目录
mkdir -p /data/tomcat/webapps
注意:这里是准备将宿主机的/data/tomcat/webapps映射到容器的
/usr/local/tomcat/webapps目录,那么在创建tomcat-0容器后,
本应该存在与webapps目录下的原生目录(例如:manager等)都
将不存在,因为映射的宿主机目录/data/tomcat/webapps为空,
所以将不能采用tomcat原有部署方式,只能将war通过rz命令上传
至宿主机的/data/tomcat/webapps目录
1.2.测试镜像
$ docker run \
-p 8080:8080 \
--name tomcat-0 \
--privileged=true \
--restart=always \
-v /soft/tomcat/webapps:/usr/local/tomcat/webapps \
-e TZ=Asia/Shanghai \
-itd tomcat:8.5.20
注1:TZ=Asia/Shanghai用于设置时区为:亚洲/上海,可进入容器用如下命令进行查看
echo `date "+%Y-%m-%d %H:%M:%S"`
注2:以上容器的创建采用的是bridge默认网络
注3:
firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
3.上传hello.war至/data/tomcat/webapps目录
rz hello.war
4.测试crm项目
http://xx.xx.xx.xx:8080/crm/sys/loginAction.action?username=zs&password=123
注1:修改crm.war的数据库IP、数据库名及账号密码
注2:测试报错,不在同一个网络所以连不上
tomcat-0 -> bridge默认网络
mysql -> mynetwork自定义网络
2.部署web项目
向移植docker compose
详见/docker-compose/docker-compose-v1.yml文件
3.解决服务之间依赖问题
场景说明:见images/01 Docker服务之间的依赖关系.png
解决方案:docker官方推荐使用wait-for-it.sh脚本来解决问题,课件:资料/wait-for-it-master.zip已提供
什么是wait-for-it.sh?
wait-for-it.sh脚本用来访问指定的地址和端口,如果收不到响应就等待一段时间再去重试,直到收到响应后,再去做前面指定好的命令
command: ["./wait-for-it.sh", "mysql-master:3306", "--", "catalina.sh", "run"]
注意事项:注意如果你使用wait-for-it.sh脚本,如果你的基础镜像不包含bash命令(比如alpine镜像)需要安装bash,
不然没法执行wait-for-it.sh脚本导致容器启动失败。
如果Dockerfile的基础镜像用的是alpine相关的基础镜像的话,记得添加如下指令安装bash:
RUN apk update
RUN apk upgrade
RUN apk add --no-cache bash
##课程中下载的tomcat:8.5.20镜像sh/bash命令均支持
docker exec -it tomcat-0 /bin/bash #不报错,能进入容器,即安装了bash命令
docker exec -it tomcat-0 /bin/sh #即安装了sh命令
3.1.制作自己mytomcat:8.5.20镜像
1.上传相关文件至/docker-compse目录
Dockerfile-mytomcat8.5.20
wait-for-it.sh
2.制作自定义镜像
docker build -f Dockerfile-mytomcat8.5.20 -t mytomcat:8.5.20 .
3.2.移植到docker-compose
注:一定要修改docker-compose-v5.yml文件中的tomcat容器镜像指向刚刚创建的mytomcat:8.5.20
注:一定要修改docker-compose-v5.yml文件中的tomcat容器镜像指向刚刚创建的mytomcat:8.5.20
注:一定要修改docker-compose-v5.yml文件中的tomcat容器镜像指向刚刚创建的mytomcat:8.5.20
使用自定义的mytomcat:8.5.20镜像构建tomcat容器。
详见docker-compose/docker-compose-v5.yml
docker-compose启动成功后,先停止tomcat容器,再停止mysql-master容器,再启动tomcat容器,查看tomcat容器日志,这时将提示wait等待中,最后在启动mysql-master后tomcat容器将正常启动。
#容器启停命令
docker -f docker-compose-v5.yml stop tomcat-0
docker -f docker-compose-v5.yml stop mysql-master
docker-compose -f docker-compose-v5.yml up -d tomcat-0
docker-compose -f docker-compose-v5.yml up -d mysql-master
#查看容器日志
docker-compose -f docker-compose-v5.yml logs -f tomcat-0
docker -f docker-compose-v5.yml logs -f