Dockerで起動する
## 前提条件
1. 本手順ではデータベースとしてPostgreSQLを使用します。MySQLを使用する手順は「[Dockerイメージを使用しDBにMySQLを指定して起動する](setup-by-docker-image-and-mysql)」を参照してください。
## 準備
プリザンターの公式Dockerイメージを使ってプリザンターを起動する手順を説明します。
[https://hub.docker.com/r/implem/pleasanter](https://hub.docker.com/r/implem/pleasanter)
環境変数をファイルベースで指定するためのファイルと Compose ファイルを作成します。
### 環境変数を指定するファイル
PostgreSQLを初期化する initdb に使われるユーザやパスワードなどの環境変数とデータベース接続文字列の設定をファイルに記述します。
データベース接続文字列についてのマニュアルです。
[パラメータ設定:Rds.json](rds-json)
SaConnectionString は最初にPostgreSQLにスーパーユーザで接続するための設定が一行で表現されています。PostgreSQLの環境変数の内容と SaConnectionString に記述されている内容を合わせる必要があります。
|名称|内容|
|---|---|
|Server|Compose ファイルのサービス名 (db) に設定する|
|Database|環境変数の POSTGRES_DB と揃える|
|UID|環境変数の POSTGRES_USER と揃える|
|PWD|環境変数の POSTGRES_PASSWORD と揃える|
POSTGRES ではじまる環境変数はPostgreSQLのDocker公式イメージが使用します。コンテナの初期化時に initdb が実行され、環境変数の値を使ってPostgreSQLの初期設定が行われます。
[postgres - Official Image | Docker Hub](https://hub.docker.com/_/postgres)
[docker-library/postgres: Docker Official Image packaging for Postgres](https://github.com/docker-library/postgres)
OwnerConnectionString と UserConnectionString はそれぞれのユーザで接続するための設定が一行で表現されています。
|名称|内容|
|---|---|
|PWD|任意のパスワード文字列。Owner と User のパスワードは別々が望ましい|
実際のファイルの例です。 {{ ... }} は適宜修正してください。
**.env** として保存します。
```
POSTGRES_USER={{Sa User}}
POSTGRES_PASSWORD={{Sa Password}}
POSTGRES_DB={{System DB}}
POSTGRES_HOST_AUTH_METHOD=scram-sha-256
POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256 --encoding=UTF-8"
Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=db;Database={{System DB}};UID={{Sa User}};PWD={{Sa password}}'
Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD={{Owner password}}'
Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD={{User password}}'
```
### Docker Compose ファイル
compose.yaml ファイルを作成します。
{{Version}}は、DockerHubで公開されているプリザンターのバージョンを指定してください。(例:latest,1.4.8.1 等)
```yaml
services:
db:
container_name: postgres
image: postgres:16
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_HOST_AUTH_METHOD
- POSTGRES_INITDB_ARGS
volumes:
- type: volume
source: pg_data
target: /var/lib/postgresql/data
pleasanter:
container_name: pleasanter
image: implem/pleasanter:{{Version}}
depends_on:
- db
ports:
- '50001:8080'
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}
codedefiner:
container_name: codedefiner
image: implem/pleasanter:codedefiner
depends_on:
- db
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}
volumes:
pg_data:
name: ${COMPOSE_PROJECT_NAME:-default}_pg_data_volume
```
ファイル配置は以下のようになります。
```text
.
|-- .env
|-- compose.yaml
```
## イメージの取得
```bash
docker compose pull
```
## CodeDefinerの実行
### ver.1.4.5まで
```bash
docker compose run --rm codedefiner _rds
```
### ver.1.4.6以降
```bash
docker compose run --rm codedefiner _rds /l "<言語>" /z "<タイムゾーン>"
```
|引数|設定例|説明|
|:--|:--|:--|
|/l|ja|Service.jsonのDefaultLanguageの値を書き換えます(※1)|
|/z|Asia/Tokyo|Service.jsonのTimeZoneDefaultの値を書き換えます(※1)|
(※1) 言語、タイムゾーンは以下マニュアルページを参照ください。
[FAQ:プリザンターでサポートしている言語とタイムゾーンのパラメータの設定値を知りたい](https://pleasanter.org/manual/faq-supported-language)
日本語環境でご利用する場合は以下コマンドとなります。
```bash
docker compose run --rm codedefiner _rds /l "ja" /z "Asia/Tokyo"
```
途中で 「Type "y" (yes) if the license is correct, otherwise type "n" (no).」 と表示されたら **y** を入力してください。
※コンソールログに以下のようにバージョンが出力されます。ここで表示されるバージョンは常に「DockerHubで公開されている最新のプリザンターのバージョン」となります。このコンソールログ表示の仕様は、compose.yamlの{{Version}}に最新よりも前のバージョンを指定した場合も同様ですが、データベースは{{Version}}に準拠した内容で作成されますので、プリザンターの動作上の問題はありません。
```bash
<INFO> Starter.Main: Implem.CodeDefiner 1.4.10.1
```
## プリザンター起動
コンテナを作成、プリザンターを起動します。
```bash
docker compose up -d pleasanter
```
ブラウザでアクセスします。
<http://localhost:50001>
ログイン画面にて「ログインID: Administrator」「初期パスワード: pleasanter」を入力します。 ログイン後、パスワードの変更を求められますので適宜パスワードを設定してください。
## コンテナの停止と削除
コンテナの停止は以下のコマンドで行います。
```bash
docker compose stop
```
停止したコンテナを再開する場合は以下のコマンドを実行します。
```bash
docker compose start
```
コンテナを停止してもDBデータは削除されません。再開する際にはデータがそのまま利用できます。
---
コンテナの削除は以下のコマンドで行います。
コンテナを削除してもDBデータ(ボリューム)は削除されません。
```bash
docker compose down
```
なおコンテナを削除した場合は、再開はできません。起動したい場合はコンテナを作成してください。
以下のコマンドを実行します。これによりDBのコンテナも一緒に作成され残っているDBデータもそのまま利用できます。
```bash
docker compose up -d pleasanter
```
コンテナを削除する時に同時にデータ(ボリューム)を削除する場合はボリュームを削除するオプションを付けて実行します。
```bash
docker compose down -v
```
## 関連情報
[FAQ:DockerHubからpullしたプリザンター1.4.0.0を起動したが、ブラウザで応答がない](faq-docker-run-not-started)