1. 准备工作
    • 安装docker
    • 下载mysql镜像

      docker pull mysql:5.7.30

    • 下载redmine镜像

      docker pull redmine:5.1

  2. docker-compose文件

    # 指定 docker-compose 的语法版本,3.8 是较新的稳定版本,支持更多功能
    version: '3.8'

    # 定义所有服务(容器)
    services:
      # MySQL 数据库服务(Redmine 依赖此数据库存储数据)
      mysql:
        # 使用的 MySQL 镜像及版本(提前通过 docker pull 下载的 5.7.30 版本)
        image: mysql:5.7.30 
        # 容器名称(自定义,便于识别和操作)
        container_name: redmine-mysql
        # 重启策略:容器退出时总是自动重启(确保服务持续运行)
        restart: always
        # 环境变量配置(MySQL 初始化参数)
        environment:
          MYSQL_ROOT_PASSWORD: "123456"   # MySQL root 用户的密码
          MYSQL_DATABASE: redmine         # 为 Redmine 创建的数据库名称
          MYSQL_USER: redmine             # Redmine 专用的数据库用户名
          MYSQL_PASSWORD: "123456"        # Redmine 数据库用户的密码(需与 Redmine 配置一致)
          TZ: Asia/Shanghai               # 时区设置为上海(确保时间同步)
        # MySQL 启动命令参数(优化数据库配置)
        command:
          --character-set-server=utf8mb4        # 数据库默认字符集(支持 emoji 等特殊字符)
          --collation-server=utf8mb4_general_ci # 字符集排序规则
          --explicit_defaults_for_timestamp=true # 规范 timestamp 类型的默认行为
          --lower_case_table_names=1             # 表名不区分大小写(避免跨系统兼容问题)
          --max_allowed_packet=128M              # 允许的最大数据包大小(适应大附件等场景)
        # 数据卷挂载(持久化存储 MySQL 数据)
        volumes:
          - ./mysql-data:/var/lib/mysql  # 将容器内的 MySQL 数据目录映射到本地 ./mysql-data 目录,防止容器删除后数据丢失
        # 资源限制配置
        deploy:
          resources:
            limits:
              memory: 1G  # 限制 MySQL 最大使用 1GB 内存(可根据服务器实际配置调整)
        # 加入自定义网络(用于与 Redmine 服务通信)
        networks:
          - redmine-network

      # Redmine 应用服务(项目管理工具)
      redmine:
        # 使用的 Redmine 镜像及版本(提前通过 docker pull 下载的 5.1 版本)
        image: redmine:5.1  
        # 容器名称(自定义,便于识别和操作)
        container_name: redmine-app
        # 重启策略:容器退出时总是自动重启
        restart: always
        # 依赖关系:Redmine 服务需在 MySQL 服务启动后再启动
        depends_on:
          - mysql  
        # 环境变量配置(Redmine 初始化参数)
        environment:
          REDMINE_DB_MYSQL: mysql         # 数据库服务名称(对应上方 MySQL 服务的名称)
          REDMINE_DB_DATABASE: redmine    # 数据库名称(与 MySQL 中创建的数据库一致)
          REDMINE_DB_USERNAME: redmine    # 数据库用户名(与 MySQL 中创建的用户一致)
          REDMINE_DB_PASSWORD: "123456"   # 数据库密码(与 MySQL 中用户密码一致)
          TZ: Asia/Shanghai               # 时区设置为上海(与数据库保持一致)
          # 以下为邮件发送配置(默认注释,如需配置邮件通知可取消注释并填写信息)
          # REDMINE_EMAIL_DELIVERY_METHOD: smtp  # 邮件发送方式(SMTP)
          # REDMINE_SMTP_ADDRESS: smtp.example.com  # SMTP 服务器地址
          # REDMINE_SMTP_PORT: 587                 # SMTP 服务器端口
          # REDMINE_SMTP_USER: your_email@example.com  # 邮箱账号
          # REDMINE_SMTP_PASSWORD: your_email_passwd   # 邮箱密码/授权码
          # REDMINE_SMTP_AUTHENTICATION: login         # 认证方式
          # REDMINE_SMTP_ENABLE_STARTTLS_AUTO: "true"  # 自动启用 STARTTLS 加密
        # 端口映射(将容器内端口映射到主机,实现外部访问)
        ports:
          - "8092:3000"  # 主机的 8092 端口映射到容器内的 3000 端口(Redmine 默认运行在 3000 端口)
        # 数据卷挂载(持久化 Redmine 数据和自定义内容)
        volumes:
          - ./redmine-data/files:/usr/src/redmine/files       # 映射附件存储目录(上传的文件会保存在这里)
          - ./redmine-data/plugins:/usr/src/redmine/plugins   # 映射插件目录(便于安装自定义插件)
          - ./redmine-data/themes:/usr/src/redmine/public/themes  # 映射主题目录(便于安装自定义主题)
        # 安全选项:禁用 seccomp 系统调用过滤(解决部分系统中容器运行的限制问题)
        security_opt:
          - seccomp:unconfined
        # 赋予容器最高权限(突破部分系统限制,确保 Redmine 正常运行)
        privileged: true
        # 加入自定义网络(与 MySQL 服务在同一网络,实现内部通信)
        networks:
          - redmine-network


    # 定义自定义网络(用于服务间隔离通信)
    networks:
      redmine-network:  # 自定义网络名称,MySQL 和 Redmine 服务通过此网络通信,避免与其他容器网络冲突

  3. 创建对应的挂载文件夹与放置docker-compose文件

    #进入home目录下

    cd /home

    #创建redmine目录

    mkdir redmine

    #创建mysql挂载目录

    mkdir mysql-data

    #添加权限

    chmod -R 777 ./mysql-data

    #创建redmin挂载目录

    mkdir redmine-data

    #进入redmine-data

    cd redmine-data

    #创建redmine挂载目录

    mkdir files

    mkdir plugins

    mkdir themes

    #添加权限

    chmod -R 777 ./files
    chmod -R 777 ./plugins/
     chmod -R 777 ./themes/

    #将docker-compose文件放置home下的redmine目录下

  4. 使用docker-compose启动项目

    #启动命令

    docker-compose up -d

    #停止命令

    docker-compose down

  5. 查看日志

    #mysql日志

    docker logs redmine-mysql -f  --tail 100

    #redmine日志

    docker logs redmine-app -f  --tail 100

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐