停止并删除容器
cd /root/docker_nginx
docker-compose down
添加 tomcat
在/root/docker_nginx修改docker-compose.yml文件
cd /root/docker_nginx
vim docker-compose.yml
内容如下:
version: '3'
services:
nginx:
image: nginx # 镜像
container_name: nginx # 指定容器名称
networks:
- mynet
ports: # bridge网络模式,指定映射端口
- "8000:80"
# network_mode: "host" # 指定网络模式
restart: always # 当docker服务启动时,容器总是跟着启动
volumes:
- /root/docker_nginx/conf.d:/etc/nginx/conf.d
tomcat1:
image: tomcat # 镜像
container_name: tomcat1 # 指定容器名称
networks:
- mynet
#ports: # bridge网络模式,指定映射端口
# - "8000:80"
# network_mode: "host" # 指定网络模式
restart: always # 当docker服务启动时,容器总是跟着启动
networks:
mynet:
启动
docker-compose up -d
为什么不用docker run 启动tomcat
因为通过 docker-compose启动的容器
与
通过下面命令启动的容器
docker run -d --name=tomcat_test tomcat
其2个容器的ip网段可能不同,无法直接访问
如果通过docker run启动容器时,需要 指定ip地址 或者 指定网络
修改tomcat容器中的webapps目录
由于当前版本的tomcat的webapps目录下是空的,需要做处理,见:
https://www.malaoshi.top/show_1EF5k2qNG471.html
测试
由于启动tomcat时没有指定映射端口,所以只能在宿主机中,通过 容器内部ip 访问tomcat
查看该容器ip
docker inspect tomcat_test
在执行结果中找到下面部分:
"IPAddress": "172.23.0.2",
在宿主机通过 curl 访问tomcat
curl http://172.23.0.2:8080/
访问的结果是html代码,如下:
配置反向代理
通过配置反向代理,其他机器 通过 反向代理服务器,访问tomcat服务器
备份default.conf文件
cd /root/docker_nginx/conf.d
cp default.conf default.conf.bak
修改default.conf文件
vim default.conf
内容如下:
server {
listen 80; # 监听所有ipv4的80端口
# listen [::]:00; # 监听所有ipv6的80端口
server_name localhost; # 匹配域名。主机绑定多个域名时使用
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / { # 通用匹配路径
proxy_pass http://tomcat1:8080/; # 反向代理
}
}
注意: proxy_pass http://tomcat1:8080/;这里tomcat1是容器名
nginx、tomcat容器使用相同网络mynet,所以可以通过 容器名 访问
重新加载 or 重启
重新加载配置文件
如果不想重启nginx docker,那么需要进入容器,重新加载配置文件
docker exec -it nginx bash
nginx -s reload
重启nginx docker
重启的方式,比重新加载要简单些
docker-compose restart
测试
访问 http://106.13.165.100:8000/ 显示tomcat首页
