0. 前言
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用,它是由 python
编写。
Compose
定位是定义和运行多个 Docker 容器的应用。Compose
有两个重点
docker-compose.yml
compose
配置文件docker-compose
命令行工具
1. 安装
windows 和 mac 中 docker-compose
在安装 docker
的时候就已经捆绑安装了。linux 中需要自己安装
1 2 3 4 5 6 7
| sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-(uname -s)-(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
|
2. 使用
1 2
| docker-compose up docker-compose down
|
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| version: '3'
services:
mongo4: image: mongo:4 privileged: true restart: unless-stopped volumes: - $HOME/transcode/data/db/:/data/db/ - ./mongo/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro container_name: mongo4 environment: MONGO_INITDB_ROOT_USERNAME: yx1 MONGO_INITDB_ROOT_PASSWORD: test MONGO_INITDB_DATABASE: transcode_v1 network_mode: bridge ports: - "47047:27017"
transcode-service: build: service privileged: true restart: unless-stopped volumes: - /var/lib/oceans/:/var/lib/oceans/ container_name: transcode-service network_mode: host
transcode-webapi: build: webapi privileged: true restart: unless-stopped container_name: transcode-webapi network_mode: host
|
然后在 webapi, service 文件夹内创建各自的 dockerfile 文件
./mongo/mongo-init.js
1 2 3 4 5 6 7 8 9 10 11 12
| db.createUser( { user: "yx1", pwd: "test", roles:[ { role: "readWrite", db: "transcode_v1" } ] } );
|
2.1 默认网桥问题
docker-compose 启动后会自动创建一个网桥, 如果不想创建, 即每个容器都写上值, 不能为空
参考: https://stackoverflow.com/a/43755216
2.2 mongo 启动后自动创建用户
参考: https://stackoverflow.com/a/54064268
3. 参考资料