跳转至

Docker-compose

version: '3'  # 定义 Docker Compose 版本

services:     # 定义服务

  web:       # 定义名为 "web" 的服务
    build: .  # 使用当前目录中的 Dockerfile 构建镜像
    ports:
      - "8000:8000"  # 将主机的 8000 端口映射到容器的 8000 端口
    volumes:
      - .:/code  # 将主机的当前目录挂载到容器中的 /code 目录
    command: python manage.py runserver 0.0.0.0:8000  # 在容器中运行的命令
    networks:
      - my-network  # 将容器连接到名为 "my-network" 的网络

  db:        # 定义名为 "db" 的服务
    image: postgres  # 使用官方 PostgreSQL 镜像
    environment:
      POSTGRES_DB: db_name  # 设置环境变量
      POSTGRES_USER: username
      POSTGRES_PASSWORD: password
    volumes:
      - db-data:/var/lib/postgresql/data  # 将一个名为 "db-data" 的卷挂载到容器中的 /var/lib/postgresql/data 目录
    networks:
      - my-network  # 将容器连接到名为 "my-network" 的网络

  redis:     # 定义名为 "redis" 的服务
    image: redis  # 使用官方 Redis 镜像
    volumes:
      - redis-data:/data  # 将一个名为 "redis-data" 的卷挂载到容器中的 /data 目录
    networks:
      - my-network  # 将容器连接到名为 "my-network" 的网络

  worker:    # 定义名为 "worker" 的服务
    build:
      context: .  # 使用当前目录作为构建上下文
      dockerfile: Dockerfile.worker  # 使用特定的 Dockerfile 构建镜像
    environment:
      REDIS_URL: redis://redis:6379/0  # 设置环境变量
    command: celery -A tasks worker --loglevel=INFO  # 在容器中运行的命令
    networks:
      - my-network  # 将容器连接到名为 "my-network" 的网络

volumes:  # 定义卷
  db-data:  # 定义名为 "db-data" 的卷
  redis-data:  # 定义名为 "redis-data" 的卷

networks:  # 定义网络
  my-network:  # 定义名为 "my-network" 的网络

# 以下是其他可能用到的 Docker Compose 指令

# 设置容器启动顺序
# depends_on:
#   - db
#   - redis

# 设置容器的资源限制
# resources:
#   limits:
#     cpus: '0.5'
#     memory: '256m'

# 设置容器的环境变量
# environment: