Docker Compose部署多个应用实战练习部署nginx和jar包。
部署项目为若依的前后端分离项目,前端使用vue+nginx部署。后端springBoot,以jar包部署。
文件列表:
首先nginx配置文件请根据我的{% post_link 运维/docker/4、Docker安装软件 docker安装nginx文章%},3个文件夹保存到宿主机中,分别为
、html、lognginx配置文件根据自己实际测试项目配置,不会的百度的nginx部署vue项目。
问题: 在反复部署中我遇到后端服务port 端口不生效
解决:加入了stdin_open
、tty
。其中 stdin_open
相当于 run
命令中的 -d
,其中 tty
相当于 run
命令中的 -i
ymlversion: '3' # 自定义版本号,一般是2,3
services:
#前端 nginx
my-nginx-pro1: # 服务名称
image: nginx # 创建容器时所需的镜像
container_name: my-nginx-pro1 # 容器名称,默认为"工程名称_服务条目名称_序号"
restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
volumes:
# :号左边是宿主机的nginx的文件路径,右边是nginx容器的文件路径
- /mymkdir/softwore/docker/test/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /mymkdir/softwore/docker/test/nginx/conf/conf.d:/etc/nginx/conf.d
- /mymkdir/softwore/docker/test/nginx/log:/var/log/nginx
- /mymkdir/softwore/docker/test/nginx/html:/usr/share/nginx/html
ports: # 宿主机与容器的端口映射关系
- "8080:8080" # 左边宿主机端口:右边容器端口
networks: # 配置容器连接的网络,引用顶级 networks 下的条目
data_security:
ipv4_address: 192.128.0.2
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
#后端
my-web-pro1: # 服务名称
image: openjdk:8 # 创建容器时所需的镜像
container_name: my-web-pro1 # 容器名称,默认为"工程名称_服务条目名称_序号"
ports: # 宿主机与容器的端口映射关系
- '8090:8090' # 左边宿主机端口:右边容器端口
restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
volumes:
- ./app:/app
# jar 包名称必须改成你自己的
command: java -Duser.timezone=GMT+8 -jar /app/app.jar
#build: . #表示以当前目录下的Dockerfile开始构建镜像
networks: # 配置容器连接的网络,引用顶级 networks 下的条目
data_security:
ipv4_address: 192.128.0.3
stdin_open: true #stdin_open相当于run命令中的-d
tty: true #tty相当于run命令中的-i
#网络服务
networks:
data_security: # 自定义网络名字
driver: bridge # 网络模式,默认为 bridge
ipam:
config:
- subnet: 192.128.0.0/16 #自定义固定容器ip 实现容器间通讯,增强docker-compose项目可移植性
shell#执行部署 建议使用-d后台执行
[root@MiWiFi-RA81-srv test]# docker-compose up -d
[+] Running 2/2
⠿ Container my-web-pro1 Started 1.1s
⠿ Container my-nginx-pro1 Started
#执行完成之后 查看容器是否启动
[root@MiWiFi-RA81-srv test]# docker ps
#部署失败执行删除所有容器继续重来
[root@MiWiFi-RA81-srv test]# docker rm -f $(docker ps -aq)
本文作者:酷少少
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!