- 公式では VM が用意されていますがより手軽に試すために作成したイメージです
- なるべく
docker way
な感じに継続的な運用が可能なイメージを目指しました - Alpine ベースの比較的軽量なイメージです
以降の説明は,次のコマンド
git clone https://github.com/orumin/enju_leaf.git
cd enju_leaf
を行ない,enju_leaf
ディレクトリをワーキングディレクトリとして作業するものとして説明します。
初回の起動は以下の手順で行います。
docker-compose pull
cp .env.production.sample .env.production # ファイル中の UID と GID を変更する際には docker-compose build が必要。後述。
echo SECRET_KEY_BASE=`docker-compose run --rm web bundle exec rake secret` >> .env.production
id=`docker create orumin/enju_leaf:1.3.3`
docker cp $id:/enju_leaf/db/migrate .
docker cp $id:/enju_leaf/private/system .
docker rm -v $id
mkdir solr
sudo chown 991:991 -R ./system ./migrate ./solr # .env.production の UID と GID の値に合わせる
export DB_USER=enju_leaf DB_NAME=enju_leaf_production DB_PASS=admin # .env.production に合わせる
export POSTGRES_PASSWORD=admin # DB の初期化に必要
docker-compose up -d db \
&& sleep 10 \
&& docker-compose exec -u postgres db sh -c "echo create user ${DB_USER} with password \'${DB_PASS}\' createdb\; | psql -f -" \
&& docker-compose exec -u postgres db createdb -U ${DB_USER} ${DB_NAME}
export POSTGRES_PASSWORD= # 不要な環境変数のリセット
docker-compose up -d solr
docker-compose run --rm web bundle exec rake db:migrate
docker-compose run --rm web bundle exec rake enju_leaf:setup
docker-compose run --rm web bundle exec rake enju_circulation:setup
docker-compose run --rm web bundle exec rake enju_subject:setup
docker-compose run --rm web bundle exec rake db:seed
mkdir -p assets
sudo chown 991:991 -R ./assets # .env.production の UID と GID の値に合わせる
docker-compose run --rm web bundle exec rake assets:precompile
docker-compose run --rm web bundle exec rake enju_leaf:upgrade
docker-compose run --rm web bundle exec rake enju_leaf:load_asset_files
docker-compose up -d
sleep 30 && docker-compose exec solr bundle exec rake environment sunspot:reindex
初期設定ではユーザー名 enjuadmin
パスワード adminpassword
でログインできます。
以降のシステム設定や OPAC 運用方法などは 公式マニュアル をご覧ください。
docker-compose up -d
sleep 30 && docker-compose exec solr bundle exec rake environment sunspot:reindex
docker-compose down
初回起動時に作成した ./migrate
ディレクトリとその中身のマイグレーションファイルが同じディレクトリに配置されていること,
既に一度システムが起動済であり PostgreSQL のロールやデータベース・テーブルなどが設定されていること,
そのデータベースが ./postgres
に存在していることが前提です。
git pull
docker-compose pull # コンテナのビルドの際には sudo docker-compose build --pull
# 1.2.1 以下から 1.2.2 以上へのアップデートの時はおそらく
# docker-compose run --rm web bundle exec rake railties:install:migrations
# でマイグレーションファイルを追加する必要がある。
# ほかにも migrate に先立って必要な作業が随時発生する可能性があるため,
# 公式ドキュメント https://github.com/next-l/enju_leaf/wiki/Update を参考の上で実施すること
docker-compose run --rm web bundle exec rake db:migrate
docker-compose run --rm web bundle exec rake enju_leaf:upgrade
docker-compose run --rm web bundle exec rake assets:precompile
docker-compose stop && docker-compose up -d
sleep 30 && docker-compose exec solr bundle exec rake environment sunspot:reindex
この作業ディレクトリをまるごとバックアップしてください。
まずバックアップしたディレクトリを移動し,その中で新しいマシンでの作業を行います。
以下のように権限を修正してください。
chown 70:0 -R ./postgres
sudo chown 991:991 -R ./system ./assets ./migrate # .env.production の UID と GID の値に合わせる
最後に起動を行います。
docker-compose up -d
sleep 30 && docker-compose exec sorl bundle exec rake environment sunspot:reindex
UID と GID ならびに DB_USER の変更はコンテナのビルドを伴う必要があります。 具体的には以下のようにビルドを行った後に .env.production に変更を反映させてください。
docker-compose build \
--build-arg UID=1000 \
--build-arg GID=1000 \
--build-arg DB_USER=enju
また,DB_USER, DB_NAME, DB_PASS の変更の際にはデータベースの再設定が必要です。
# OLD_DB_USER は DB_USER を変更する前の値
# OLD_DB_NAME は DB_NAME を変更する前の値
export OLD_DB_USER=enju_leaf DB_USER=enju \
OLD_DB_NAME=enju_leaf_production DB_NAME=production \
DB_PASS=root
docker-compose up -d db \
&& sleep 10 \
&& docker-compose exec -u postgres db sh -c "pg_dump ${OLD_DB_NAME} > enju_dump.sql" \
&& docker-compose exec -u postgres db dropdb ${OLD_DB_NAME} \
&& docker-compose exec -u postgres db sh -c "echo drop user ${OLD_DB_USER} | psql -f -" \
&& docker-compose exec -u postgres db sh -c "echo create user ${DB_USER} with password \'${DB_PASS}\' createdb\; | psql -f -" \
&& docker-compose exec -u postgres db createdb -U ${DB_USER} ${DB_NAME}
&& docker-compose exec -u postgres db psql ${DB_NAME} -f enju_dump.sql
おそらく,運用上では,.env.production で設定した UID, GID と同じ値を持つユーザーを作成し, そのユーザーのホームディレクトリ以下で運用するといちいち chown などで権限を変更する手間が省けると思われます。
install.sh
, update.sh
, start.sh
, stop.sh
は本 README で解説したそれぞれの手順をシェルスクリプトにしたものです。
とくにエラーチェックなどは一切しない簡易なものなので参考程度にしてください。
また, install.sh
は sudo
をつけて実行することが好ましいと思われます。