LoginSignup
0
0

More than 1 year has passed since last update.

Redmineリストア手順(公式redmine Docker, PostgreSQL, Docker-compose)

Last updated at Posted at 2022-03-13

やりたいこと

CentOSで動かしていたredmineのバックアップの公式redmineでのリストア。
公式Redmine+postgeSQL環境をdocker-composeで構築の手順に従いました。
redmineのバージョンは、もともと動かしていたものに合わせました。
また、私がリストアをした過程で起こったトラブルについてもまとめました。

1. バックアップ

pg_dump -U PostgreSQLユーザー名 -h ホスト名 --file=ダンプデータファイル名 Redmineデータベース名

データベース名等は、config/database.ymlで確認できる。(今回は、/var/lib/redmine/にあった。)
https://redmine.jp/faq/system_management/backup/

config/database.yml
6 production:
  7   adapter: postgresql
  8   database: db_redmine
  9   host: localhost
 10   username: user_redmine
 11   password: [パスワード]
 12   encoding: utf8
pg_dump -U user_redmine -h localhost --file=redmine.sql db_redmine

files,pluginは/var/lib/redmine/files以下にあった。

2. Dockerを立てる。

  • Docker, Docker-composeのインストール

Docker:

sudo apt install docker.io

Docker-compose: https://docs.docker.jp/compose/install.html#linux

  • 任意の場所にdocker-compose.ymlを作成。
mkdir ~/redmine34
cd redmine34
vim docker-compose.yml
docker-compose.yml
version: '3.7'

services:
    # Redmine本体
    redmine:
        image: redmine:3.4.13-passenger
        container_name: redmine
        depends_on:
                - postgres
        ports:
            - '3000:3000'
              #        expose:
              #            - '3000'
        volumes:
            - ./redmine/files:/usr/src/redmine/files
        restart: always
        environment:
            REDMINE_DB_POSTGRES: postgres
            REDMINE_DB_DATABASE: redmine
            REDMINE_DB_USERNAME: redmine
            REDMINE_DB_PASSWORD: redmine
            TZ: Asia/Tokyo
            REDMINE_DB_PORT: 5432
        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: redmine
            POSTGRES_USER: redmine
            POSTGRES_PASSWORD: redmine
            POSTGRES_DATABASE: redmine
            TZ: Asia/Tokyo

volumes:
    redmine:
    postgres:
  • 起動+確認
    redmineコンテナとredmine_postgresコンテナが立ち上がります。
sudo docker-compose up -d
sudo docker ps 
CONTAINER ID   IMAGE                      COMMAND                  CREATED      STATUS      PORTS                    NAMES
57e942429ef6   redmine:3.4.13-passenger   "/docker-entrypoint.…"   5 days ago   Up 4 days   0.0.0.0:3000->3000/tcp   redmine
24d8f032deb6   postgres:11.5              "docker-entrypoint.s…"   5 days ago   Up 4 days   0.0.0.0:5432->5432/tcp   postgres_redmine
トラブル1:docker psで見た時、remineのSTATUSがずっとrestart。

redmineとpostgres_redmineのコンテナがちゃんとつながらず、redmineがrestartし続けていた。調べてみるとポート番号が使われていたので、5432ポートから、5431ポートに変更した。

vim docker-compose.yml
docker-compose.yml
version: '3.7'

services:
    # Redmine本体
    redmine:
        ...
        environment:
            ...
            REDMINE_DB_PORT: 5431 # 変更
            ...

    # DBサーバ
    postgres:
        ...
        ports:
            - "5431:5431" # 変更
        ...

postgres_redmineのコンテナに入り、デフォルトのポート番号を変更。

sudo docker exec -it postgres_redmine /bin/bash

# postgres_redmineコンテナ内
apt-get update
apt-get install vim
vim /var/lib/postgresql/data/postgresql.conf
postgresql.conf
# listen_addresses = 'localhost'
listen_addresses = '*'

# port = 5432
port = 5431
sudo docker-compose restart
sudo docker ps

http://blog.totno.net/db/postgresql-threeconfirmation#toc5

3. リストア

docker exec -it redmine /bin/bash # redmineのdocker imageに入る。

# redmineコンテナ内
gem install bundler
bundle install --without development test
bundle install --without development test rmagick
bundle exec rake generate_secret_token
exit
  • バックアップしたDBデータをpostgresqlのdockerイメージ内にコピー
docker cp [redmine.sqlのパス] postgres_redmine:[コンテナ内の任意のディレクトリ]
  • 初期DBデータを削除して、バックアップデータをリストア
docker exec -it postgres_redmine /bin/bash

# postgre_redmineコンテナ内
psql -U redmine -d redmine
drop schema public cascade;
create schema public;
\q
psql -U redmine redmine < [redmineコンテナ内に格納したバックアップDBデータ]
exit
トラブル2: ERROR: role "postgres"/"user_redmine" does not exist
ERROR:  role "postgres" does not exist
ERROR:  role "user_redmine" does not exist

というエラーが出たので、↓のコマンドで上の2つのユーザを作成してやり直した。

# postgres_redmine Docker内
createuser --interactive --pwprompt -U postgres
createuser --interactive --pwprompt -U redmine
トラブル3: psql: error: connection to server on socket
psql -U redmine -d redmine

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?

https://www.dbonline.jp/postgresql/connect/index2.html#section1
を参考にport番号を指定したら治った。

  • filesとpluginをredmineコンテナに入れる。
sudo docker cp [保存場所]/files/. redmine:/usr/src/redmine/files/
sudo docker cp [保存場所]/plugin/. redmine:/usr/src/redmine/plugin/
docker exec -it redmine /bin/bash

# redmineコンテナ内
bundle exec rake db:migrate RAILS_ENV=production
exit
  • 再起動
sudo docker-compose restart 

再起動が終わると、http://localhost:3000 でredmineが見れるようになります。

0
0
0

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
0
0