Skip to content

Compose 配置文件参考

本文档介绍 docker-compose.yml 文件的完整配置选项。

基本结构

yaml
version: '3.8'

services:
  service-name:
    # 服务配置

networks:
  # 网络配置

volumes:
  # 卷配置

服务配置

image

指定使用的镜像:

yaml
services:
  web:
    image: nginx:latest

build

构建镜像:

yaml
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        - NODE_ENV=production

ports

端口映射:

yaml
services:
  web:
    ports:
      - "8080:80"
      - "8443:443"

volumes

卷挂载:

yaml
services:
  web:
    volumes:
      - ./data:/app/data
      - my-volume:/app/storage

environment

环境变量:

yaml
services:
  web:
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgres://...

或使用 .env 文件:

yaml
services:
  web:
    env_file:
      - .env

depends_on

服务依赖:

yaml
services:
  web:
    depends_on:
      - db
      - redis
  db:
    image: postgres:15
  redis:
    image: redis:7

networks

网络配置:

yaml
services:
  web:
    networks:
      - frontend
      - backend

networks:
  frontend:
  backend:

restart

重启策略:

yaml
services:
  web:
    restart: always  # no, always, on-failure, unless-stopped

Compose V3 部署配置

注意

deploy 配置仅在 Docker Swarm 模式下生效。

yaml
version: '3.8'

services:
  web:
    image: nginx
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3

完整示例

yaml
version: '3.8'

services:
  web:
    build: .
    image: myapp:latest
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    volumes:
      - ./app:/app
      - app_data:/app/data
    depends_on:
      - db
      - redis
    networks:
      - app-network
    restart: always

  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - app-network

  redis:
    image: redis:7-alpine
    networks:
      - app-network

volumes:
  app_data:
  db_data:

networks:
  app-network:
    driver: bridge

由 BSFC Tech 提供技术支持