简单记录最近部署使用的docker-compose文件,以免忘记
# 关闭
docker-compose down
# 开启,-d 表示deamon启动
docker-compose up -d
这里举一个完整简单的例子,单机部署,都没有集群,集群部署回头再补。
docker-compose.yml
version: '3.3' # 指定docker-compose 版本
services: # 要拉起的服务们
redis:
image: redis # 镜像
container_name: redis # 容器名
command: redis-server --requirepass redisPass # 启动redis,增加密码 redisPass
volumes: # 宿主机:容器 文件夹映射
- /root/data/redis:/data
networks: # 网络名,服务都在同一个网络内,就可以通过容器名互相访问
- bd_tool_net
restart: always # 重启
mongo:
image: mongo
container_name: mongo
# 因为镜像是不可变的,对于项目中的一些可能更改的变量
# 我们可以通过environment参数传进去,镜像中使用MONGO_INITDB_ROOT_USERNAME即可获取
# 这样即使我们的变量需要更改,也只需要修改docker-compose文件,无须重新build镜像
environment:
- MONGO_INITDB_ROOT_USERNAME=boss # mongo 用户名
- MONGO_INITDB_ROOT_PASSWORD=mongoPass # mongo 密码
volumes:
- /root/data/db:/data/db/ # mongo数据映射到宿主机持久化储存
restart: always
networks:
- bd_tool_net
bd-tool-ui: # 前端
image: bd-tool-ui:latest
container_name: bd-tool-ui
depends_on: # 依赖于后端服务
- bd-tool-api
restart: always
ports: # 端口映射
- "80:80"
networks:
- bd_tool_net
bd-tool-api: # 后端
image: bd-tool-api:latest
container_name: bd-tool-api
depends_on: # 依赖于mongo和redis
- mongo
- redis
restart: always
# 同样吧可能更改的东西给他传进去
environment:
EGG_SERVER_ENV: prod
MIGRATION_ENV: prod
REDIS_PASS: redisPass
MONGODB_USER: boss
MONGODB_PASS: mongoPass
# 需要的启动命令,这里是初始化数据并启动服务
command: sh -c "MIGRATION_ENV=prod yarn migrations up && yarn start"
ports:
- "7001:7001"
networks:
- bd_tool_net
# 网络
networks:
bd_tool_net:
driver: bridge