使用docker及docker-compose部署redmine
./redmine-data/files:/usr/src/redmine/files# 映射附件存储目录(上传的文件会保存在这里)- ./redmine-data/themes:/usr/src/redmine/public/themes# 映射主题目录(便于安装自定义主题)- ./redmine-data/plugins:/usr/src/redmine/plugins# 映射插件目录(便于安
- 准备工作
- 安装docker
- 下载mysql镜像
docker pull mysql:5.7.30
- 下载redmine镜像
docker pull redmine:5.1
- 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 服务通过此网络通信,避免与其他容器网络冲突 - 创建对应的挂载文件夹与放置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目录下
- 使用docker-compose启动项目
#启动命令
docker-compose up -d
#停止命令
docker-compose down
- 查看日志
#mysql日志
docker logs redmine-mysql -f --tail 100
#redmine日志
docker logs redmine-app -f --tail 100
更多推荐
所有评论(0)