|
|
|
|
@ -1,60 +1,67 @@
|
|
|
|
|
# Docker Compose配置文件,版本为3(指定Compose语法版本)
|
|
|
|
|
version: '3'
|
|
|
|
|
|
|
|
|
|
# 定义所有服务(容器)
|
|
|
|
|
services:
|
|
|
|
|
# 1. MySQL数据库服务(存储应用数据)
|
|
|
|
|
db:
|
|
|
|
|
image: mysql:latest
|
|
|
|
|
restart: always
|
|
|
|
|
environment:
|
|
|
|
|
- MYSQL_DATABASE=djangoblog
|
|
|
|
|
- MYSQL_ROOT_PASSWORD=DjAnGoBlOg!2!Q@W#E
|
|
|
|
|
ports:
|
|
|
|
|
image: mysql:latest # 使用最新版MySQL镜像
|
|
|
|
|
restart: always # 容器退出后自动重启(确保服务持续运行)
|
|
|
|
|
environment: # 环境变量配置(数据库初始化参数)
|
|
|
|
|
- MYSQL_DATABASE=djangoblog # 自动创建的数据库名称
|
|
|
|
|
- MYSQL_ROOT_PASSWORD=DjAnGoBlOg!2!Q@W#E # MySQL root用户密码
|
|
|
|
|
ports: # 端口映射:主机3306端口 → 容器3306端口(MySQL默认端口)
|
|
|
|
|
- 3306:3306
|
|
|
|
|
volumes:
|
|
|
|
|
- ./bin/datas/mysql/:/var/lib/mysql
|
|
|
|
|
depends_on:
|
|
|
|
|
volumes: # 数据卷挂载:持久化MySQL数据
|
|
|
|
|
- ./bin/datas/mysql/:/var/lib/mysql # 主机目录 → 容器内MySQL数据存储目录
|
|
|
|
|
depends_on: # 服务依赖:启动db前先启动redis(可能用于数据库缓存等场景)
|
|
|
|
|
- redis
|
|
|
|
|
container_name: db
|
|
|
|
|
container_name: db # 容器名称固定为"db"
|
|
|
|
|
|
|
|
|
|
# 2. Django博客应用服务(核心应用)
|
|
|
|
|
djangoblog:
|
|
|
|
|
build:
|
|
|
|
|
context: ../../
|
|
|
|
|
restart: always
|
|
|
|
|
command: bash -c 'sh /code/djangoblog/bin/docker_start.sh'
|
|
|
|
|
ports:
|
|
|
|
|
build: # 构建配置
|
|
|
|
|
context: ../../ # 指定Dockerfile所在的上下文目录(上级目录的上级目录)
|
|
|
|
|
restart: always # 容器退出后自动重启
|
|
|
|
|
command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' # 启动命令:执行应用启动脚本
|
|
|
|
|
ports: # 端口映射:主机8000端口 → 容器8000端口(Django应用端口)
|
|
|
|
|
- "8000:8000"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./collectedstatic:/code/djangoblog/collectedstatic
|
|
|
|
|
- ./logs:/code/djangoblog/logs
|
|
|
|
|
- ./uploads:/code/djangoblog/uploads
|
|
|
|
|
environment:
|
|
|
|
|
- DJANGO_MYSQL_DATABASE=djangoblog
|
|
|
|
|
- DJANGO_MYSQL_USER=root
|
|
|
|
|
- DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E
|
|
|
|
|
- DJANGO_MYSQL_HOST=db
|
|
|
|
|
- DJANGO_MYSQL_PORT=3306
|
|
|
|
|
- DJANGO_REDIS_URL=redis:6379
|
|
|
|
|
links:
|
|
|
|
|
volumes: # 数据卷挂载:持久化应用数据和配置
|
|
|
|
|
- ./collectedstatic:/code/djangoblog/collectedstatic # 静态资源目录(供Nginx访问)
|
|
|
|
|
- ./logs:/code/djangoblog/logs # 应用日志目录
|
|
|
|
|
- ./uploads:/code/djangoblog/uploads # 用户上传文件目录(如图片)
|
|
|
|
|
environment: # 环境变量配置(应用连接参数)
|
|
|
|
|
- DJANGO_MYSQL_DATABASE=djangoblog # 数据库名称(与db服务对应)
|
|
|
|
|
- DJANGO_MYSQL_USER=root # 数据库用户名
|
|
|
|
|
- DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E # 数据库密码(与db服务对应)
|
|
|
|
|
- DJANGO_MYSQL_HOST=db # 数据库服务地址(指向同网络内的"db"服务)
|
|
|
|
|
- DJANGO_MYSQL_PORT=3306 # 数据库端口
|
|
|
|
|
- DJANGO_REDIS_URL=redis:6379 # Redis服务地址(指向同网络内的"redis"服务)
|
|
|
|
|
links: # 显式链接到其他服务(用于容器间通信)
|
|
|
|
|
- db # 链接到MySQL服务
|
|
|
|
|
- redis # 链接到Redis服务
|
|
|
|
|
depends_on: # 服务依赖:启动djangoblog前先启动db服务(确保数据库就绪)
|
|
|
|
|
- db
|
|
|
|
|
- redis
|
|
|
|
|
depends_on:
|
|
|
|
|
- db
|
|
|
|
|
container_name: djangoblog
|
|
|
|
|
container_name: djangoblog # 容器名称固定为"djangoblog"
|
|
|
|
|
|
|
|
|
|
# 3. Nginx服务(反向代理和静态资源服务)
|
|
|
|
|
nginx:
|
|
|
|
|
restart: always
|
|
|
|
|
image: nginx:latest
|
|
|
|
|
ports:
|
|
|
|
|
restart: always # 容器退出后自动重启
|
|
|
|
|
image: nginx:latest # 使用最新版Nginx镜像
|
|
|
|
|
ports: # 端口映射:HTTP(80)和HTTPS(443)端口
|
|
|
|
|
- "80:80"
|
|
|
|
|
- "443:443"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./bin/nginx.conf:/etc/nginx/nginx.conf
|
|
|
|
|
- ./collectedstatic:/code/djangoblog/collectedstatic
|
|
|
|
|
links:
|
|
|
|
|
- djangoblog:djangoblog
|
|
|
|
|
container_name: nginx
|
|
|
|
|
volumes: # 数据卷挂载:Nginx配置和静态资源
|
|
|
|
|
- ./bin/nginx.conf:/etc/nginx/nginx.conf # 主机Nginx配置文件 → 容器内Nginx配置文件
|
|
|
|
|
- ./collectedstatic:/code/djangoblog/collectedstatic # 静态资源目录(与djangoblog服务共享)
|
|
|
|
|
links: # 链接到djangoblog服务,实现反向代理
|
|
|
|
|
- djangoblog:djangoblog # 将djangoblog服务映射为"djangoblog"主机名
|
|
|
|
|
container_name: nginx # 容器名称固定为"nginx"
|
|
|
|
|
|
|
|
|
|
# 4. Redis服务(缓存服务,用于提升应用性能)
|
|
|
|
|
redis:
|
|
|
|
|
restart: always
|
|
|
|
|
image: redis:latest
|
|
|
|
|
container_name: redis
|
|
|
|
|
ports:
|
|
|
|
|
- "6379:6379"
|
|
|
|
|
restart: always # 容器退出后自动重启
|
|
|
|
|
image: redis:latest # 使用最新版Redis镜像
|
|
|
|
|
container_name: redis # 容器名称固定为"redis"
|
|
|
|
|
ports: # 端口映射:主机6379端口 → 容器6379端口(Redis默认端口)
|
|
|
|
|
- "6379:6379"
|