dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2198
  • 铜币14034枚
  • 威望6091点
  • 银元155个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:266回复:0

如何迁移 redmine 到 Docker ?

楼主#
更多 发布于:2019-05-21 11:09
目标
1. 迁移 redmine 服务。服务器部署方式,由 VM虚拟机 调整为 Docker 容器。
2. 增加迁移成功概率,选择使用与当前 redmine 差异较小的版本。

环境
1. 当前 redmine 运行环境
CentOS 6.6 amd64
MySql 5.6
Redmine 2.6.5.stable
Ruby    2.1.5-p273 (2014-11-13) [x86_64-linux]
Rails   3.2.21

2. 需要迁移的数据
包括两方面 一是上传文件(附件数据保存在 files目录),二是 MySql数据库中的数据(主要的配置信息)。
# 目录结构
tree -d -L 1 /opt/redmine/
/opt/redmine/
├── app
├── config
├── db
├── doc
├── extra
├── files
├── lib
├── log
├── plugins
├── public
├── script
├── test
├── tmp
└── vendor
14 directories
# 附件数据
其中 files 目录为上传的附件数据,需要迁移,注意文件权限为 redmine。

操作步骤
介绍完成运行环境,接下来就可以开始迁移相关操作了。
1. 准备新的运行环境
使用 docker 最神奇的地方就是,只需要一条命令就能够完成部署工作:
docker-compose up -d

2. docker-compose.yml 配置文件
之所以这么神奇是因为在 docker-compose.yml 配置文件中定义好了相应的参数。
cat redmine/docker-compose.yml
version: '3.1'

services:
  redmine:
    image: redmine:2
    ports:
      - 3000:3000
    volumes:
      - /etc/localtime:/etc/localtime
      - web-data:/usr/src/redmine/files
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PORT: 3306
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: example
      REDMINE_NO_DB_MIGRATE: 1

  db:
    image: mysql:5.7
    volumes:
      - /etc/localtime:/etc/localtime
      - db-data:/var/lib/mysql
    environment:
      - TZ: Asia/Chongqing
      - MYSQL_DATABASE: redmine
      - MYSQL_USER: redmine
      - MYSQL_PASSWORD=example
      - MYSQL_ROOT_PASSWORD=example
    command:
      --character-set-server=utf8
      --collation-server=utf8_general_ci
      --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

volumes:
    web-data:
      driver: local
    db-data:
      driver: local
#
简单来说,配置文件定义了两个服务(容器),一个是 redmine服务用于运行 Redmine 程序,另一个是 db服务也就是MySQL数据库,最后的 volumes 部分则是为了数据固化而创建的数据卷,用于防止容器生命周期结束数据一起消失,通过 docker-compose up -d 命令创建了这两个容器。

这里重点说下 redmine 的 environment 部分 REDMINE_NO_DB_MIGRATE: 1 选项,因为我的目标是迁移 redmine,我已经有 数据库结构(MySQL表),所以显示设置 REDMINE_NO_DB_MIGRATE 参数,如果你是新部署redmine 无需显示设置这个参数即可。

其它的参数基本就是字面含义,可以参考 https://hub.docker.com/_/redmine

3. 数据导入
# 导入数据库
gzip -dc 2019-05-07-redmine.sql.gz | mysql --defaults-file=/root/shell/.ops.conf redmine

# 拷贝附件数据
查找 redmine 卷目录位置
docker volume ls | grep redmine
local               redmine_web-data
根据 volume 名称查找实际目录
docker volume inspect redmine_web-data | grep "Mountpoint"
        "Mountpoint": "/data/docker/volumes/redmine_web-data/_data",
迁移数据
mv migrate/files/* /data/docker/volumes/redmine_web-data/_data/

# 修改文件权限为 redmine 用户
docker exec -ti redmine_redmine_1 chown -R redmine.redmine files

3. 验证
迁移后的 redmine 版本信息。

描述:redmine-on-docker

图片:redmine-on-docker.png

redmine-on-docker



参考
https://hub.docker.com/_/redmine
http://zongming.net/read-864
#
欢迎关注微信公众号: 运维录
游客

返回顶部