# Docker Windows 新手启动指南 本地 Windows 开发环境启动 MySQL / Redis / RabbitMQ 三个容器。 ## 前置条件 - 已安装并启动 **Docker Desktop**(任务栏图标变绿才算启动完成) ## 首次启动(只做一次) 1. 创建 MySQL 数据卷: ```powershell docker volume create changzhou_mysql_data ``` 2. 启动容器(⚠️ 必须先 cd 到 compose 目录,且必须带两个 -f 参数): ```powershell cd d:\changzhou_app\changzhou_backend\docker\compose docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d ``` > ⚠️ **不要只执行 `docker-compose up -d`**! > 少了 `-f docker-compose.dev.yml` 会导致 Redis 容器找不到 redis.conf, > 状态一直是 Restarting 无限重启。 > dev 覆盖文件负责把 `docker/config/redis/redis.dev.conf` 挂载进容器。 3. 验证: ```powershell docker ps # 三个容器都应为 Up 状态:mysql_db / redis_cache / rabbitmq_server docker exec redis_cache redis-cli ping # 返回 NOAUTH Authentication required. 是正常的(Redis 已启动且带密码) ``` ## 端口对照表(宿主机 → 容器) | 服务 | 本机地址 | 容器端口 | 账号信息 | |------|---------|---------|---------| | MySQL | 127.0.0.1:23306 | 3306 | root/123456,业务库 changzhou | | Redis | 127.0.0.1:26379 | 6379 | 密码见 redis.dev.conf | | RabbitMQ | 127.0.0.1:25672 | 5672 | skins/mk,vhost /skins | | RabbitMQ 管理台 | http://127.0.0.1:35672 | 15672 | skins/mk | ## 日常操作 ```powershell # 都在 docker\compose 目录下执行 cd d:\changzhou_app\changzhou_backend\docker\compose # 启动 docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d # 停止 docker-compose -f docker-compose.yml -f docker-compose.dev.yml stop # 查看状态 docker ps # 查看某个容器日志 docker logs redis_cache --tail 50 # 重建某个容器(比如改了配置) docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --force-recreate redis ``` ## 常见问题 ### 1. Redis 一直 Restarting 启动命令少了 `-f docker-compose.dev.yml`,重建即可: ```powershell cd d:\changzhou_app\changzhou_backend\docker\compose docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --force-recreate redis ``` ### 2. 提示 `external volume "changzhou_mysql_data" not found` ```powershell docker volume create changzhou_mysql_data ``` ### 3. 提示 `cannot find the file specified` 没有 cd 到 `docker\compose` 目录就执行了命令,`-f` 的相对路径按当前目录解析。 ### 4. 和 chengdu 项目切换 端口可能冲突,先到另一个项目的 compose 目录执行 `docker-compose stop`,再启动本项目。