1. 前置准备

  1. 安装并启动

  2. 安装时启用 WSL 2 backend(Docker Desktop 默认推荐)

  3. 打开 PowerShell 验证:

docker version
docker compose version

2. 创建 Compose 文件

在 PowerShell 执行:

mkdir d:\docker\redmine
cd d:\docker\redmine
notepad docker-compose.yml

将下列内容粘贴并保存。请把示例密码替换成自己的强密码,尤其是 MYSQL_ROOT_PASSWORDREDMINE_SECRET_KEY_BASE

services:
  db:
    image: mysql:8.0
    container_name: redmine-db
    restart: unless-stopped
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: "ChangeThisRootPassword_2026!"
      MYSQL_DATABASE: "redmine"
      MYSQL_USER: "redmine"
      MYSQL_PASSWORD: "ChangeThisDatabasePassword_2026!"
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - redmine-net

  redmine:
    image: redmine:latest
    container_name: redmine
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8080:3000"
    environment:
      REDMINE_DB_MYSQL: "db"
      REDMINE_DB_DATABASE: "redmine"
      REDMINE_DB_USERNAME: "redmine"
      REDMINE_DB_PASSWORD: "ChangeThisDatabasePassword_2026!"
      REDMINE_SECRET_KEY_BASE: "ReplaceWithARandomLongSecretString_AtLeast32Characters"
    volumes:
      - redmine_files:/usr/src/redmine/files
    networks:
      - redmine-net

volumes:
  mysql_data:
  redmine_files:

networks:
  redmine-net:

这里使用 Docker named volumes 保存 MySQL 数据和 Redmine 附件文件,因此即使重建容器,通常业务数据仍会保留;不要随意执行带 -v 的删除命令。官方镜像通过 REDMINE_DB_MYSQL、数据库用户名和密码连接 MySQL,并可将宿主机端口映射到 Redmine 的 3000 端口。 hub.docker

3. 启动 Redmine

C:\docker\redmine 目录执行:

docker compose up -d

检查容器状态:

docker compose ps

首次启动需要初始化数据库,等约 1–3 分钟后访问:

http://localhost:8080

默认管理员账号通常是:

用户名:admin
密码:admin

首次登录后会要求修改密码。官方 Docker Hub 示例也说明可通过 http://localhost:8080 访问 Compose 部署的 Redmine。 hub.docker

4. 常用运维命令

# 查看实时日志;首次启动或异常时最有用
docker compose logs -f

# 停止服务,但保留数据卷
docker compose stop

# 再次启动
docker compose start

# 停止并删除容器、网络,但保留 named volumes
docker compose down

# 拉取新版镜像并重建
docker compose pull
docker compose up -d

5. 常见问题

  • 8080 端口被占用:把配置中的 "8080:3000" 改为 "8090:3000",再访问 http://localhost:8090

  • 页面打不开:确认 Docker Desktop 已启动,并运行 docker compose ps 查看 redmineredmine-db 是否均为 Up

  • Redmine 连不上数据库:执行 docker compose logs dbdocker compose logs redmine,重点检查两处 REDMINE_DB_PASSWORD / MYSQL_PASSWORD 是否完全一致。

  • 局域网访问:使用 http://Windows主机IP:8080;同时需要在 Windows 防火墙放行 TCP 8080。若只供本机使用,保持 localhost 访问即可。