早速ですがPleasanter(プリザンター)をビルドしてDockerコンテナ上で動かそうと思います。
常に最新のPleasanterをお手軽に試せるようになりますね。
今回は公式のリポジトリにあるDocker Compose
ファイルを使ってみます。
Composeの定義を読む
version: '3.5'
services:
Implem.Pleasanter:
build:
context: .
dockerfile: ./Implem.Pleasanter/Dockerfile
environment:
- Implem.Pleasanter_Rds_PostgreSQL_SaConnectionString=${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
- Implem.Pleasanter_Rds_PostgreSQL_OwnerConnectionString=${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
- Implem.Pleasanter_Rds_PostgreSQL_UserConnectionString=${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
image: implem.pleasanter
container_name: pleasanter
depends_on:
- db
networks:
- default
特に変わった点はないですが環境変数の記述が冗長に見えます。
これはPleasanterが参照する環境変数名には . (ピリオド)が含まれていて実行環境によっては変数定義がエラーになるのを避けるための工夫です。
一度 _ (アンダースコア)に置きかえた変数名で実行環境に定義し、それを参照しつつ本来の変数名でコンテナに渡してあげます。
CodeDefinerのコンテナも同様です。
データベースはどうしているか
version: '3.5'
services:
db:
container_name: postgresql
build:
context: .
dockerfile: ./docker-build/postgresql/Dockerfile
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
ports:
- "5432:5432"
volumes:
- ./docker-build/postgresql/init:/docker-entrypoint-initdb.d
networks:
- default
DBはPostgreSQLを使うようになっています。
ユーザやDBの指定は環境変数で渡しています。 services/db/environment
がその定義ですので適宜設定します。
環境変数に定義したものはPleasanterが参照するデータベース接続文字列にも指定します。
コンテナ定義には公式イメージを使います。初期化機能があり、この機能を使って全文検索用のモジュールを一緒にインストールしてしまいます。
volumes
で初期化処理を所定のポイントにアタッチします。
こうすることで任意の初期化処理を実行してくれます。
初期化機能に関してはこれらのエントリが分かり易かったです。
ビルドする
必要な環境変数の設定をしてビルドしていきます。
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=<任意のSaパスワード>
export POSTGRES_DB=postgres
export Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=db;Database=postgres;UID=postgres;PWD=<任意のSaパスワード>'
export Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=<任意のOwnerパスワード>'
export Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=<任意のUserパスワード>'
SaConnectionString
の注意点です。
-
Server
: Composeファイルのservices
で定義した名前にします(db
) -
Database
: 環境変数のPOSTGRES_DB
と同じにします -
UID
: 環境変数のPOSTGRES_USER
と同じにします -
PWD
: 環境変数のPOSTGRES_PASSWORD
と同じにします
ではビルドしましょう。
docker-compose build
Windowsの場合は環境変数に以下の2つを指定してください。
-
DOCKER_BUILDKIT
を1
-
COMPOSE_DOCKER_CLI_BUILD
をtrue
CodeDefinerの実行とPleasanterの起動
初回の場合はCodeDefinerを実行します。
docker-compose run --rm --name codedefiner Implem.CodeDefiner _rds
Pleasanterを起動します。
docker-compose run --rm -d -p 50001:80 --name pleasanter Implem.Pleasanter
-p
の50001
がブラウザ等でアクセスする際のURLのポートになります。(必要に応じて適宜変更してください)
http://localhost:50001/
でアクセスしてみます。
いかがでしょうか、いつもの画面が表示されたでしょうか。
最後に終了します。
docker-compose down