LoginSignup
12
21

More than 3 years have passed since last update.

公式Redmine+postgeSQL環境をdocker-composeで構築

Posted at

概要

  • 老朽化したサーバからの移行に伴い、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を日本語ロケールで設定する場合

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環境に、旧環境からデータを移行する際には、以下の手順で実施します。
  1. 移行元環境から、DBデータ、添付ファイル、プラグインを取得し、移行先環境に転送します。
    • DBデータバックアップ: pg_dump -U redmine redmine > [任意のファイル名]
    • filesディレクトリ(添付ファイル): /var/lib/redmine/files
    • pluginディレクトリ(プラグイン): /var/lib/redmine/plugin
  2. redmineコンテナにアクセスし、 公式のインストール手順 の、以下の作業を実施します。
  3. 移行元の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
    • テーブルの再作成
      • psql -U redmine redmine < [redmineコンテナ内に格納したバックアップDBデータ]
      • postgresqlコンテナから出る:exit
  4. redmineコンテナに再度アクセスし、公式のアップグレード手順の、以下の作業を実施
    • [Step 4 – データベースの更新]:データベースのマイグレーションとプラグインのマイグレーションを実施
  5. redmine関連コンテナを再起動し、設定を反映させる
    • redmineコンテナを再起動:docker-compose restart

参考

12
21
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
21