文章目录
前言:
本人使用的 docker-compose.yml 文件,内容如下:
bash
services:
# MySQL 服务配置
mysql:
image: mysql:8.4.0
container_name: mysql
restart: always
environment:
# 设置MySQL根用户密码
MYSQL_ROOT_PASSWORD: 123456
# 创建一个默认数据库
MYSQL_DATABASE: sk_knowledge
ports:
# 将容器的3306端口映射到主机的3306端口
- "3306:3306"
volumes:
# 持久化MySQL数据
- mysql-data:/var/lib/mysql
networks:
- app-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
interval: 10s
timeout: 5s
retries: 5
# Redis 服务配置
redis:
image: redis:7.0.11
container_name: redis
restart: always
command: redis-server --requirepass 123456 --appendonly yes
ports:
# 将容器的6379端口映射到主机的6379端口
- "6379:6379"
volumes:
# 持久化Redis数据
- redis-data:/data
networks:
- app-network
healthcheck:
test: ["CMD", "redis-cli", "-a", "123456", "ping"]
interval: 10s
timeout: 5s
retries: 5
# Weaviate 服务配置
weaviate:
command:
- --host
- 0.0.0.0
- --port
- '8080'
- --scheme
- http
image: semitechnologies/weaviate:1.33.2
container_name: weaviate
ports:
- 8080:8080
- 50051:50051
volumes:
- weaviate-data:/var/lib/weaviate
restart: always
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
DEFAULT_VECTORIZER_MODULE: 'none'
ENABLE_MODULES: ''
CLUSTER_HOSTNAME: 'node1'
networks:
- app-network
#minio
minio:
image: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z
container_name: minio
restart: always
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: admin123456
ports:
- "9000:9000" # MinIO API 端口(用于程序访问)
- "9001:9001" # MinIO 控制台端口(用于网页管理)
volumes:
# 持久化存储 MinIO 数据(宿主机目录可自定义)
- minio-data:/data
command: server /data --console-address ":9001" # 指定数据目录和控制台端口
healthcheck:
# 健康检查配置
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
interval: 30s
timeout: 10s
retries: 3
networks:
- app-network
#mongodb
mongodb:
image: mongo:8.0.0
container_name: mongodb
restart: always
ports:
- "27017:27017" # 映射MongoDB默认端口(主机:容器)
volumes:
# 持久化存储MongoDB数据
- mongodb-data:/data/db
command:
# 启动命令(如需自定义配置,可添加--config /etc/mongo/mongo.conf)
- --bind_ip_all # 允许所有IP访问(生产环境建议限制特定IP)
healthcheck:
# 健康检查:通过mongodb-shell验证服务可用性
test: echo 'db.runCommand("ping").ok' | mongosh mongodb:27017/test --quiet
interval: 10s
timeout: 5s
retries: 5
networks:
- app-network # 自定义网络隔离
# Temporal 服务(使用 MySQL 作为存储)
temporal:
image: temporalio/auto-setup:1.29.0
container_name: temporal-service
restart: always
depends_on:
mysql:
condition: service_healthy
environment:
- DB=mysql8 # 指定数据库
- DB_PORT=3306
- MYSQL_USER=root # 对应 MySQL 的用户
- MYSQL_PWD=123456
- MYSQL_SEEDS=mysql # 连接到 MySQL 容器
# - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development.yaml
# Temporal 数据库名称(需与初始化脚本一致)
- DATABASE_NAME=temporal
- VISIBILITY_DATABASE_NAME=temporal_visibility
ports:
- "7233:7233" # Temporal gRPC 端口
networks:
- app-network
# Temporal Web UI
temporal-ui:
image: temporalio/ui:2.39.0
container_name: temporal-ui
restart: always
depends_on:
- temporal
environment:
- TEMPORAL_ADDRESS=temporal:7233 # 连接 Temporal 服务
- TEMPORAL_UI_PORT=8080
ports:
- "8081:8080" # UI 访问端口
networks:
- app-network
# 定义网络
networks:
app-network:
driver: bridge
# 定义数据卷,用于持久化数据
volumes:
mysql-data:
redis-data:
weaviate-data:
mongodb-data:
minio-data:
一、运行 docker-compose.yml 文件
在上一篇文章中提到如何安装并使用 docker,现在如何运行 docker-compose.yml 文件
1、确保 Docker Desktop 已经启动(右下角有小鲸鱼 🐳)
2、进入 docker-compose.yml 所在文件夹
3、直接 cmd 运行:
bash
docker compose up
👉 注意(重点):
- 新版本是 docker compose(没有中横线)
- 老版本才是 docker-compose
4、如果不想一直占着窗口:docker compose up -d
5、结果如下:

问题: 其余下载成功了,但是有一个 mysql 端口被占了,镜像没有拉下来,因为本机也在使用 mysql,导致 3306 端口被占,Docker 抢不到。
解决: 改下 Docker 端口即可:
bash
- "3306:3306" 改成 - "3307:3306"
含义:Windows 用 3307、容器内部还是 3306
其余端口占用也是同样的道理
改完后,输入:
bash
docker compose down
docker compose up -d
二、docker compose down 和 docker compose up -d命令
2.1 docker compose down
停止并删除当前 compose 创建的所有东西
👉 举个简单理解:
相当于:把这一整套服务关掉并清空"运行状态"
2.2 docker compose up -d
启动(或重新创建)所有服务。
它会做:
- 如果本地没有镜像 → 自动拉取
- 创建容器
- 启动服务
- 按 docker-compose.yml 配置运行
一起用这两个命令:重启整个系统(干净重建)
三、运行结果
1️⃣ MySQL(数据库)
- 地址:localhost
- 端口:3306
- 用户名:root
- 密码:123456
- 数据库:sk_knowledge
👉 用工具连接,比如:
- Navicat
- DBeaver
2️⃣ Redis
- 地址:localhost
- 端口:6379
- 密码:123456
3️⃣ Weaviate(向量数据库)
- API地址: http://localhost:8080
- gRPC端口: localhost:50051
4️⃣ MinIO(对象存储,很重要)
👉 这个你可以直接打开网页:
- 控制台(管理界面): http://localhost:9001
- 登录:
- 用户:admin
- 密码:admin123456
👉 API端口:http://localhost:9000
5️⃣ MongoDB
- 地址:localhost
- 端口:27017
6️⃣ Temporal(工作流引擎)
- gRPC地址: localhost:7233
7️⃣ Temporal UI(可视化界面)
👉 浏览器打开:http://localhost:8081
四、可能报错的问题
1️⃣ 端口访问不了
- 检查 ports 有没有写
- 检查容器是否启动成功
2️⃣ 报错 "docker compose not found"
说明版本问题,可以试:docker-compose up
3️⃣ 文件名错误
必须叫:docker-compose.yml