这是一个整合了几乎所有主要字段的 Docker Compose 示例文件,包括服务定义、卷、网络、Secrets、配置等所有你可能用到的配置项。这个文件模拟了一个 Web 服务、数据库服务、以及如何使用卷、网络、Secrets 和配置。
综合示例 docker-compose.yml
version: '3.8' # Docker Compose 文件版本services:web:image: nginx:alpine # 使用 nginx:alpine 镜像container_name: nginx-container # 指定容器名称build: # 构建镜像选项context: ./webdockerfile: Dockerfile.customargs:APP_VERSION: "1.0"ports:- "8080:80" # 将宿主机的 8080 端口映射到容器的 80 端口environment: # 环境变量- NGINX_HOST=localhost- NGINX_PORT=80env_file: # 加载环境变量文件- ./common.env- ./web.envvolumes: # 挂载卷- ./html:/usr/share/nginx/html # 挂载本地目录- web-data:/data # 使用定义的卷networks: # 网络配置- frontenddepends_on: # 服务依赖- dblogging: # 日志配置driver: "json-file"options:max-size: "10m"max-file: "3"healthcheck: # 健康检查test: ["CMD", "curl", "-f", "http://localhost"]interval: 30stimeout: 10sretries: 3secrets: # 使用 Secrets- db_passwordconfigs: # 使用配置- web_configrestart: always # 容器失败时自动重启extra_hosts: # 添加额外的主机名解析- "somehost:162.242.195.82"dns: # 自定义 DNS 服务器- 8.8.8.8dns_search: # DNS 搜索域- example.comtty: true # 分配一个伪终端stdin_open: true # 保持 STDIN 打开db:image: postgres:13 # 使用 postgres:13 镜像container_name: postgres-containerenvironment: # 数据库相关环境变量POSTGRES_DB: mydatabasePOSTGRES_USER: userPOSTGRES_PASSWORD: passwordvolumes: # 数据库卷挂载- db-data:/var/lib/postgresql/datanetworks: # 网络- backendsecrets: # 使用 Secrets- db_passwordrestart: alwaysvolumes: # 定义卷web-data: # Web 服务的数据卷driver: localdb-data: # 数据库的数据卷driver: localdriver_opts:o: "uid=1000,gid=1000"type: "nfs"networks: # 定义网络frontend:driver: bridgebackend:driver: bridgeipam:config:- subnet: 172.16.238.0/24gateway: 172.16.238.1secrets: # 定义 Secretsdb_password:file: ./secrets/db_password.txt # 从文件加载密码configs: # 定义配置web_config:file: ./config/nginx.conf # 加载 Nginx 配置文件
文件结构解析
-
version
:指定 Docker Compose 文件版本。 -
services
:定义了两个服务:web
服务:基于 Nginx,暴露 8080 端口,使用build
构建镜像,挂载卷、使用环境变量文件、依赖db
服务,并配置健康检查、日志、Secrets 和配置。db
服务:基于 Postgres,使用环境变量指定数据库配置,挂载卷并使用 Secrets。
-
volumes
:定义了两个卷:web-data
:用于 Web 服务的数据存储。db-data
:用于数据库的数据持久化,并配置了自定义的驱动选项。
-
networks
:定义了两个网络:frontend
:前端网络,使用默认桥接驱动。backend
:后端网络,配置了 IP 地址分配和网关。
-
secrets
:定义了数据库的密码,以文件形式存储。 -
configs
:为 Web 服务提供 Nginx 的配置文件。
这个文件展示了 Docker Compose 中几乎所有可能用到的字段,是一个集成了服务构建、网络配置、卷挂载、Secrets、配置、日志、健康检查等功能的完整示例。你可以根据自己的应用需求,灵活修改和定制这些字段。