ishane.cn

了解Docker Compose文件(一)

2026/01/02
4
0

核心概念与文件结构

Docker Compose的核心是一个YAML格式的配置文件(通常命名为docker-compose.yml)。它通过声明式的方式,一次性定义和管理多容器应用。一个标准的Compose文件通常包含以下四个顶层元素:

  • version: 指定Compose文件的格式版本(如'3.8')。
  • services: 核心部分,定义应用中包含的所有容器服务。
  • networks: 定义自定义网络,实现服务间的隔离与通信。
  • volumes: 定义数据卷,用于数据的持久化存储。

服务(Services)核心配置详解

服务定义是Compose文件的灵魂,决定了容器的具体行为。以下是日常开发中最常用的配置项:

  1. 镜像与构建
  • image:指定容器使用的镜像。如果本地不存在,Compose会自动从仓库拉取。例如:
    image: nginx:1.25-alpine
  • build:如果镜像需要本地构建,使用此参数指定包含 Dockerfile 的上下文目录。例如:build: ./api
  1. 端口映射(ports)
    将容器内部端口暴露给宿主机,格式为"宿主机端口:容器端口"
ports:
  - "8080:80"      # 将容器的80端口映射到宿主机的8080端口
  - "443:443"
  1. 环境变量(environment & env_file)
    用于向容器注入配置,避免硬编码:
environment:
  - APP_ENV=production
  - DB_HOST=mysql
env_file:
  - ./env/production.env  # 从外部文件批量加载环境变量
  1. 数据卷挂载(volumes)
    用于持久化数据或共享配置文件,格式为"宿主机路径:容器路径"
volumes:
  - ./html:/usr/share/nginx/html:ro  # :ro 表示只读挂载
  - mysql_data:/var/lib/mysql        # 使用命名卷持久化数据库数据
  1. 依赖关系(depends_on)
    控制服务的启动顺序。例如,Web 服务依赖数据库和缓存:
depends_on:
  - mysql
  - redis