概要
- 老朽化したサーバからの移行に伴い、Redmine環境もdokerで再構築・移行した
- 構築環境情報を明確化するためと、ミドルウェアやツールのバージョンアップを容易にするため
前提
- サーバにdockerおよびdocker-composeがインストールされていること
結論(docker-compose.yml)
- 以下の
docker-compose.yml
をサーバに配置し、docker-compose up -d
で実行する
docker-compose.yml
version: '3.7'
services:
# Redmine本体
redmine:
image: redmine:3.4.13-passenger
container_name: redmine
ports:
- '33000:3000'
expose:
- '3000'
volumes:
- ./redmine/files:/usr/src/redmine/files
- ./redmine/log:/usr/src/redmine/log
- ./redmine/plugins:/usr/src/redmine/plugins
- ./redmine/public/themes:/usr/src/redmine/public/themes
restart: always
environment:
REDMINE_DB_POSTGRES: postgres
REDMINE_DB_DATABASE: redmine
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: redmine
TZ: Asia/Tokyo
links:
- postgres
# DBサーバ
postgres:
image: postgres:11.5
container_name: postgres_redmine
volumes:
- ./postgres/db-data:/var/lib/postgresql/data
- ./postgres/initdb:/docker-entrypoint-initdb.d
ports:
- "5432:5432"
restart: always
environment:
POSTGRES_ROOT_PASSWORD: postgres
POSTGRES_USER: redmine
POSTGRES_PASSWORD: redmine
POSTGRES_DATABASE: redmine
TZ: Asia/Tokyo
volumes:
redmine:
postgres:
- 正常に起動したら、ブラウザから、
ホストIP:33000
でアクセスしてRedmineのトップ画面が表示されることを確認する。
(余談)postgreSQLを日本語ロケールで設定する場合
-
postgreSQLのimageには初期ロケールはen_US.utf8しか設定されていないので、日本語ロケールを使う場合には、docker imageを作る必要があります。(参考)Docker for Mac で 日本語locale設定を含む PostgreSQL を構築
-
上記docker-compose.ymlのDBサーバ部分を書き換え、docker image作成用のDockerfileを作ります
docker-compose.yml
# DBサーバ
# 日本語ロケールのdocker imageを利用
postgres:
build:
context: ./
dockerfile: ./Dockerfile
container_name: postgres_redmine
volumes:
Dockerfile
FROM postgres:11.5
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.utf8
旧環境からの移行(リストア)
- 構築したRedmine環境に、旧環境からデータを移行する際には、以下の手順で実施します。
- 移行元環境から、DBデータ、添付ファイル、プラグインを取得し、移行先環境に転送します。
- DBデータバックアップ:
pg_dump -U redmine redmine > [任意のファイル名]
- filesディレクトリ(添付ファイル):
/var/lib/redmine/files
- pluginディレクトリ(プラグイン):
/var/lib/redmine/plugin
- redmineコンテナにアクセスし、 公式のインストール手順 の、以下の作業を実施します。
- redmineコンテナへアクセス:
docker exec -it redmine /bin/bash
- Step 4 - 依存するソフトウェアのインストール
- Step 5 - セッションストア秘密鍵の生成
- コンテナから出る:
exit
- 移行元のDBデータを、移行先環境にリストアします
(※ 環境初期構築時にDBに初期データが事前に入ってしまうため、テーブルを削除→再作成という流れで実施)
- ホストのバックアップデータをpostgresqlコンテナにコピー:
docker cp [ホストのバックアップファイル] postgres_redmine:[コンテナ内の任意のディレクトリ]
- postgresqlコンテナにアクセス:
docker exec -it postgres_redmine /bin/bash
- DBに登録されている初期データを削除
- テーブルの削除
- RedmineDBにアクセス:
psql -U redmine -d redmine
- テーブル全削除:
drop schema public cascade;
- スキーマの再構築:
create schema public;
- RedmineDBから出る:
\q
- RedmineDBにアクセス:
- テーブルの再作成
psql -U redmine redmine < [redmineコンテナ内に格納したバックアップDBデータ]
- postgresqlコンテナから出る:
exit
- テーブルの削除
- redmineコンテナに再度アクセスし、公式のアップグレード手順の、以下の作業を実施
- [Step 4 – データベースの更新]:データベースのマイグレーションとプラグインのマイグレーションを実施
- redmine関連コンテナを再起動し、設定を反映させる
- redmineコンテナを再起動:
docker-compose restart