概述
Docker Compose的好处
- 简化开发流程:Docker Compose可以通过单个文件定义所有服务,并在单个命令下启动它们。
- 可移植性:Docker Compose文件可以与其他开发人员和生产环境共享,确保在所有环境中都可以准确地部署应用程序。
- 管理多个容器:Docker Compose可以管理多个容器,从而使部署和管理多个容器的应用程序更加容易。
- 简化部署:Docker Compose可以一次性运行多个容器,从而简化了部署应用程序的过程。
免构建应用
- 项目开发完成之后,不需要docker容器重新构建即可使用,特别是针对一些环境比较复杂的容器,减少docker构建过程,只是需要重新启动即可。
- 隔离运行环境,无需再宿主机里面部署,只是需要启动容器即可
例子1:服务器中部署egg项目
常规部署
- 环境:安装node环境
- 管理应用+自动启动:安装pm2、或者书写脚本等(有可能还需要配合定时任务才能做到服务保障)
通过docker-compose免构建部署
| - node-egg
| - data
... egg项目
| - logs 日志文件
| - env
| - node16
| - bin
| - node 可执行文件
| - yarn 可执行文件
| - npm 可执行文件
version: '3'
services:
node-egg:
image: centos:centos7
container_name: sskj-node-egg
restart: always
environment:
- PATH=/env/node16/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ./node-egg/data:/data/src/
- ./node-egg/logs:/root/logs/
- ./node-egg/env:/env/
ports:
- 7010:7001
command: bash -c "cd /data/src && yarn start"
networks:
- app_net
networks:
app_net:
driver: bridge
ipam:
config:
- subnet: 10.11.0.0/16
- 优点:会跟随docker启动而启动,服务停止之后,会自动重启
- 查看日志可以通过:docker logs -f sskj-node-egg
- 注意事项:egg中默认的npm run start 命令是运行在后台的,需要修改为前台运行
例子2:服务器中部署java中的jar项目
常规部署
- 环境:安装java环境
- 管理应用+自动启动:书写脚本+定时任务进行服务保障
通过docker-compose免构建部署
- 项目目录架构如下
| - java-01
| - data
| - test.jar 项目文件
| - logs 日志文件
| - env
| - java
| - bin
| - java 可执行文件
version: '3'
services:
java-01:
image: centos:centos7
container_name: sskj-java-01
restart: always
environment:
- PATH=/env/java/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- LANG=en_US.UTF-8
volumes:
- ./java-01/data:/data/
- ./java-01/logs:/data/logs
- ./java-01/env:/env
ports:
- 8088:8088
command: bash -c "cd /data && java -jar ./test.jar --server.port=8088"
networks:
- app_net
networks:
app_net:
driver: bridge
ipam:
config:
- subnet: 10.11.0.0/16
注意事项:java运行之后一定要保障在前台运行