Docker Compose 配置文件是一个 YAML 格式的文件,用于定义和配置 Docker 容器的运行环境。它包含了容器的名称、镜像、端口映射、环境变量、数据卷等信息,可以通过 docker-compose 命令一次性启动多个容器,实现应用的快速部署和管理。配置文件的编写需要遵循一定的语法规则,可以参考官方文档进行学习和实践。
多个配置文件
我们可以为同一个项目配置多个compose文件,使用多个 Compose 文件使您能够针对不同的环境或不同的工作流程自定义 Compose 应用程序。
默认情况下,Compose 读取两个文件,docker-compose.yml和一个可选的docker-compose.override.yml文件。按照惯例,docker-compose.yml包含您的基本配置。override.yml 文件,顾名思义,就是包含现有服务或全新服务的配置覆盖。
如果在两个文件中都定义了服务,Compose 会使用 override 进行合并配置。
要使用多个覆盖文件或具有不同名称的覆盖文件,您可以使用该-f选项来指定文件列表。Compose 按照在命令行中指定的顺序合并文件。
- # yaml 配置
- # 指定 compose 文件的版本
- version: '3'
- services:
- redis:
- # 指定 docker 镜像, 可以是远程仓库镜像、本地镜像
- image: redis
- ports:
- - "6379:6379"
- networks:
- - app
- nginx:
- image: nginx
- # 建立宿主机和容器之间的端口映射关系
- ports:
- - 80:80
- - "443:443"
- # 定义容器和宿主机的卷映射关系,
- volumes:
- - ./nginx/nginx.conf:/etc/nginx/nginx.conf
- - ./nginx/logs:/var/log/nginx
- - ./nginx/html:/usr/share/nginx/myhtml
- - ./nginx/crt:/etc/nginx/crt
- # 将容器加入指定网络
- networks:
- - app
- es:
- image: es_ik:1.2
- ports:
- - "9200:9200"
- - "9300:9300"
- networks:
- - app
- mongo-connector:
- image: mongo_connector:1.6
- volumes:
- - ./mongo-connect/mongo_es_config_3_20.json:/usr/local/mongo-connector/config/mongo_es_config_3_20.json
- - ./mongo-connect/log:/usr/local/mongo-connector/log
- # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式
- command:
- - /bin/sh
- - -c
- - |
- mongo-connector -c /usr/local/mongo-connector/config/mongo_es_config_3_20.json
- # 定义容器启动顺序
- depends_on:
- - es
- networks:
- - app
- es_head:
- image: mobz/elasticsearch-head:5
- ports:
- - "9000:9100"
- networks:
- - app
- depends_on:
- - es
- project:
- image: adoptopenjdk/openjdk8
- volumes:
- - ./workapp:/usr/local/workapp
- ports:
- - 8080:8080
- command:
- - /bin/sh
- - -c
- - |
- sh /usr/local/workapp/mysh.sh
- depends_on:
- - es
- - redis
- - nginx
- # 定义 networks 信息
- networks:
- app:
- external: true