2026年1月24日
鼓捣docker compose yml文件
# 指定 Docker Compose 文件的版本,3.8 是一个稳定且功能完善的版本 version: '3.8' # 定义所有的服务 services: # 定义名为 web 的服务(应用主服务) web: # 根据当前目录(.)下的 Dockerfile 构建镜像 build: . # 端口映射:将主机的 8000 端口映射到容器内的 8000 端口 ports: - "8000:8000" # 数据卷挂载(目录映射) volumes: # 将主机当前目录挂载到容器内的 /app 目录(代码热更新) - .:/app # 将名为 static_volume 的数据卷挂载到容器内的 /app/static 目录(保存静态文件) - static_volume:/app/static # 设置环境变量:开启 DEBUG 模式 environment: - DEBUG=True # 从 .env 文件中加载额外的环境变量(优先级高于上面的 environment) env_file: - .env # 依赖关系:web 服务必须在 db 和 redis 服务启动后才启动 depends_on: - db - redis # 定义名为 db 的服务(MySQL 数据库) db: # 使用官方的 mysql:8.0 镜像 image: mysql:8.0 # MySQL 环境变量配置 environment: # 设置 MySQL root 用户的密码 MYSQL_ROOT_PASSWORD: rootpass # 自动创建名为 app_db 的数据库 MYSQL_DATABASE: app_db # 数据卷挂载:将 mysql_data 卷挂载到容器的 MySQL 数据目录 volumes: - mysql_data:/var/lib/mysql # 健康检查:确保 MySQL 服务正常运行后才对外提供服务 healthcheck: # 执行 mysqladmin ping 命令检查服务状态 test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] # 检查间隔:每 5 秒检查一次 interval: 5s # 超时时间:3 秒内无响应则判定为失败 timeout: 3s # 重试次数:最多重试 5 次,失败则判定服务不健康 retries: 5 # 定义名为 redis 的服务(Redis 缓存) redis: # 使用轻量的 redis:alpine 镜像(基于 Alpine Linux) image: redis:alpine # 数据卷挂载:将 redis_data 卷挂载到容器的 Redis 数据目录 volumes: - redis_data:/data # 启动命令:启动 Redis 服务并设置密码为 yourpassword command: redis-server --requirepass yourpassword # 定义所有需要持久化的卷(Volume) volumes: # 存储应用静态文件的卷 static_volume: # 存储 MySQL 数据的卷 mysql_data: # 存储 Redis 数据的卷 redis_data: