惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
博客园 - 司徒正美
A
About on SuperTechFans
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Fortinet All Blogs
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Jina AI
Jina AI
H
Help Net Security
量子位
IT之家
IT之家

Kevin's Castle

从阿里云迁移至腾讯云 – Kevin's Castle 更换网站SSL证书 – Kevin's Castle 记录一次二级路由和主路由互相访问的折腾史 – Kevin's Castle 解决部分笔记本deepin上声音小 – Kevin's Castle 开源社区中心:9月团建活动 – Kevin's Castle 开源社区中心:5月团建活动 – Kevin's Castle 社区工作的一些感悟 – Kevin's Castle 不忘初心,方得始终 – Kevin's Castle 2021,重新起航 – Kevin's Castle
鼓捣docker compose yml文件 – Kevin's Castle
Kevin · 2026-01-24 · via Kevin's Castle
# 指定 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: