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: