一.创建Tomcat文件夹
首先在宿主机创建Tomcat文件夹,用于放置Tomcat的配置文件、日志文件、程序部署包等。
二.docker拉取镜像,启动容器
直接用 docker-compose.yml 方式创建容器,无法启动 tomcat ,需要修改配置文件,所以先临时创建一个容器,然后把容器内需要的文件复制到宿主机,再用 docker-compose.yml 方式创建正式的容器。
#从镜像服务器拉取tomcat9镜像
docker pull tomcat:9.0
#创建并启动tomcat容器,-d表示后台启动,前面的38600代表主机的端口,后面的8080代表容器内的端口
docker run -d -p 38600:8080 --name jx_tomcat tomcat:9.0
注:此时访问localhost:38600可能会提示404,tomcat:9.0的镜像容器中,把tomcat首页的内容从有原来的webapps文件夹下放在webapps.dist,而webapps文件夹则是空的,导致访问404。文章下文给出解决的方法。
#查询当前所有的docker容器
docker ps -a
#进入容器名为jx_tomcat的容器,查看tomcat文件夹内的内容
docker exec -it jx_tomcat /bin/bash
进入tomcat容器内部,有一个webapps文件夹和webapps.dist文件夹。
#访问tomcat首页404的办法就是需要把webapps删除,
rm -rf webapps
#再把webapps.dist重命名为webapps
mv webapps.dist webapps
三.复制容器内的tomcat文件到宿主机
把容器内的conf、logs、webapps文件夹复制到宿主机上
# 注:是在宿主机上执行这条命令。
docker cp 容器名:/usr/local/tomcat/conf/* /usr/local/dockercompose/tomcat/conf
docker cp 容器名:/usr/local/tomcat/logs/* /usr/local/dockercompose/tomcat/logs
docker cp 容器名:/usr/local/tomcat/webapps/* /usr/local/dockercompose/tomcat/webapps
#之后可以删除这个临时容器
docker rm -f jx_tomcat
四.编写docker-compose.yml文件,启动容器
#编写docker-compose.yml文件
services:
jxTomcat:
user: root
restart: always
container_name: jx_tomcat
image: tomcat:9
privileged: true
environment:
- TZ="Asia/Shanghai"
ports:
- "38600:38600" #宿主机开放端口:/usr/local/dockercompose/tomcat/conf/service.xml配置文件里面的端口
volumes:
- /usr/local/dockercompose/tomcat/webapps/:/usr/local/tomcat/webapps/
- /usr/local/dockercompose/tomcat/conf:/usr/local/tomcat/conf
- /usr/local/dockercompose/tomcat/logs:/usr/local/tomcat/logs
- /etc/localtime:/etc/localtime
#启动容器
cd /usr/local/dockercompose
docker-compose -f docker-compose.yml up -d
#查看容器
docker ps
docker ps -a
#附一些指令
#docker-compose编排部署
docker-compose -f docker-compose.yml up -d
#docker-compose编排构建部署
docker-compose -f docker-compose.yml up -d --build
#停止所有容器
docker stop $(docker ps -a -q)
#删除所有容器
docker rm $(docker ps -a -q)
#删除所有镜像
docker rmi -f $(docker images -qa)