|
|
# Docker Compose配置文件,版本为3(指定兼容的Compose语法版本)
|
|
|
version: '3'
|
|
|
|
|
|
# 定义所有服务(容器)
|
|
|
services:
|
|
|
# 1. Elasticsearch服务(用于全文搜索功能,集成IK中文分词器)
|
|
|
es:
|
|
|
image: liangliangyy/elasticsearch-analysis-ik:8.6.1 # 使用带IK分词器的ES镜像,版本8.6.1
|
|
|
container_name: es # 容器名称固定为"es",便于管理
|
|
|
restart: always # 容器退出后自动重启(确保服务持续运行)
|
|
|
environment: # 环境变量配置
|
|
|
- discovery.type=single-node # 单节点模式(无需集群,适合测试/小型部署)
|
|
|
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置JVM内存大小(初始/最大均为512M,避免内存溢出)
|
|
|
ports: # 端口映射:主机9200端口 → 容器9200端口(ES默认API端口)
|
|
|
- 9200:9200
|
|
|
volumes: # 数据卷挂载:持久化ES数据
|
|
|
- ./bin/datas/es/:/usr/share/elasticsearch/data/ # 主机目录 → 容器内ES数据存储目录
|
|
|
|
|
|
# 2. Kibana服务(ES的可视化管理工具,用于操作/监控ES)
|
|
|
kibana:
|
|
|
image: kibana:8.6.1 # Kibana镜像,版本需与ES一致(8.6.1)
|
|
|
restart: always # 容器退出后自动重启
|
|
|
container_name: kibana # 容器名称固定为"kibana"
|
|
|
ports: # 端口映射:主机5601端口 → 容器5601端口(Kibana默认Web端口)
|
|
|
- 5601:5601
|
|
|
environment: # 环境变量配置:指定关联的ES地址
|
|
|
- ELASTICSEARCH_HOSTS=http://es:9200 # 指向同网络内的"es"服务(容器间通过服务名通信)
|
|
|
|
|
|
# 3. Django博客服务(核心应用服务)
|
|
|
djangoblog:
|
|
|
build: . # 基于当前目录的Dockerfile构建镜像(不使用现成镜像,需本地有Dockerfile)
|
|
|
restart: always # 容器退出后自动重启
|
|
|
command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' # 容器启动后执行的命令:运行启动脚本
|
|
|
ports: # 端口映射:主机8000端口 → 容器8000端口(Django默认开发服务器端口)
|
|
|
- "8000:8000"
|
|
|
volumes: # 数据卷挂载:持久化应用数据/静态资源
|
|
|
- ./collectedstatic:/code/djangoblog/collectedstatic # 主机静态资源目录 → 容器内静态资源目录(Nginx可直接访问)
|
|
|
- ./uploads:/code/djangoblog/uploads # 主机上传文件目录 → 容器内上传文件目录(如博客图片)
|
|
|
environment: # 环境变量配置:Django应用的关键参数(数据库、缓存、ES等)
|
|
|
- DJANGO_MYSQL_DATABASE=djangoblog # Django连接的MySQL数据库名
|
|
|
- DJANGO_MYSQL_USER=root # MySQL用户名
|
|
|
- DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E # MySQL密码
|
|
|
- DJANGO_MYSQL_HOST=db # MySQL服务地址(指向同网络内的"db"服务,需额外配置db服务)
|
|
|
- DJANGO_MYSQL_PORT=3306 # MySQL端口
|
|
|
- DJANGO_MEMCACHED_LOCATION=memcached:11211 # Memcached缓存地址(指向同网络内的"memcached"服务,需额外配置)
|
|
|
- DJANGO_ELASTICSEARCH_HOST=es:9200 # ES服务地址(指向同网络内的"es"服务)
|
|
|
links: # 显式链接到其他服务(已逐步被depends_on替代,此处用于兼容)
|
|
|
- db # 链接到MySQL服务
|
|
|
- memcached # 链接到Memcached服务
|
|
|
depends_on: # 服务依赖:启动djangoblog前,先启动db服务(确保数据库就绪)
|
|
|
- db
|
|
|
container_name: djangoblog # 容器名称固定为"djangoblog" |