Dockerイメージを使用しパラメータを既定値から変更して起動する
## はじめに
本手順は、以下マニュアルの手順通りにDockerが利用できることを前提としています。
・[Dockerで起動する](getting-started-pleasanter-docker)
未読の場合は先に上記マニュアルを参照し、プリザンターの公式Dockerイメージを使ってプリザンターを起動できることを確認してください。
## 制限事項
1. Dockerでプリザンターを運用する場合、パラメータファイルの設定変更時は、プリザンターの停止・再起動だけでなく、「docker compose build」コマンドによるビルドを再実施してください。ビルドを行っていない状態では、プリザンターを再起動してもパラメータファイルの変更が反映されません。
## 前提条件
1. 本手順ではデータベースとしてPostgreSQLを使用します。MySQLを使用する手順は「[Dockerイメージを使用しDBにMySQLを指定して起動する](setup-by-docker-image-and-mysql)」を参照してください。
## Dockerイメージでプリザンターを運用する際のパラメータファイルについて
以下マニュアルの手順でプリザンターを起動する際、パラメータに設定される値は固定されています。
・[Dockerで起動する](getting-started-pleasanter-docker)
プリザンターに反映したいパラメータファイルを作成した上で、本手順を実施することにより、Dockerイメージから起動したプリザンターにパラメータの変更を反映させることができます。
---
## 1. ファイル配置
以下マニュアルの手順と比較し、追加が必要なファイルがあります。
・[Dockerで起動する](getting-started-pleasanter-docker)
フォルダを以下のように構成し、ファイルを配置します。
```text
.
|-- compose.yaml
|-- .env
|
+-- app_data_parameters
| +-- 拡張機能用フォルダ
| | +-- 拡張機能用ファイル
| |
| +-- パラメータファイル
|
+-- CodeDefiner
| +-- Dockerfile
|
+---Pleasanter
+-- Dockerfile
```
### 1-1. app_data_parametersフォルダ
app_data_parametersフォルダは、オンプレミスのサーバまたはクラウド環境でプリザンターをセットアップする際に配備する「\App_Data\Parameters」フォルダ(パラメータファイルや拡張機能用のファイルを配備するフォルダ)と同等の意味をもちます。
#### パラメータファイルについて
パラメータファイルは、セットアップしたプリザンターの環境全体に関わる設定を記述するファイルです。
#### Dockerの場合のパラメータファイル配備
公式のDockerイメージを使用する場合は、既定値を設定したパラメータファイルを内包しているため、app_data_parametersフォルダを配備せずにプリザンターを起動することができます。
パラメータを既定値から変更したい場合は、変更済みのファイルを事前に用意し、app_data_parametersに格納してください。
#### パラメータファイルの配備手順
実際にapp_data_parametersフォルダ配下にパラメータファイルを配備してみましょう。
**〈パラメータ設定変更の例〉**
以下の手順で[Search.json](/ja/manual/search-json)の「DisableCrossSearch」の設定を変更します。既定値の「false」を削除して「true」に変更し、プリザンターの横断検索機能を無効化します。
1. [ダウンロードセンター](https://pleasanter.org/dlcenter)から、プリザンターをダウンロードします。特段理由がない場合は最新バージョンをダウンロードしてください。過去にリリースした特定のバージョンが必要な場合は、該当のバージョンのプリザンターをダウンロードしてください。
2. zipファイルを解凍します。
3. 解凍したフォルダ配下にある「\pleasanter\Implem.Pleasanter\App_Data\Parameters\Search.json」をapp_data_parametersフォルダ配下にコピーします。
4. コピーしたSearch.jsonを編集し、「DisableCrossSearch」を「true」に変更して保存します。
以上でパラメータファイルの配備は完了です。
### 1-2. CodeDefinerフォルダ
/CodeDefiner/Dockerfileを以下の内容で作成します。
```
FROM implem/pleasanter:codedefiner
COPY app_data_parameters/ /app/Implem.Pleasanter/App_Data/Parameters/
ENTRYPOINT [ "dotnet", "Implem.CodeDefiner.dll" ]
```
### 1-3. Pleasanterフォルダ
/Pleasanter/Dockerfileを以下の内容で作成します。
```
ARG VERSION=latest
FROM implem/pleasanter:${VERSION}
COPY app_data_parameters/ App_Data/Parameters/
ENTRYPOINT [ "dotnet", "Implem.Pleasanter.dll" ]
```
### 1-4 .envファイル
.envファイルを作成します。{{ ... }} は適宜修正してください。
1. 環境変数「PLEASANTER_VER」に指定する{{Version}}は、DockerHubで公開されているプリザンターのバージョンを指定してください。(例:latest,1.4.10.1 等)
バージョンの値は、前述の「1-1. app_data_parametersフォルダ」内に配備するパラメータファイルの取得元のバージョンと一致させる必要があります。
2. {{Version}}以外は「 [Dockerで起動する](getting-started-pleasanter-docker) 」の.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"
PLEASANTER_VER={{Version}}
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}}'
```
### 1-5 compose.yaml ファイル
compose.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:
build:
context: .
dockerfile: ./Pleasanter/Dockerfile
args:
- VERSION=${PLEASANTER_VER}
container_name: pleasanter_${PLEASANTER_VER}
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:
build:
context: .
dockerfile: ./CodeDefiner/Dockerfile
container_name: 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
```
## 2. コンテナイメージのビルド
以下コマンドを実行します。
```bash
docker compose build
```
## 3. 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:プリザンターでサポートしている言語とタイムゾーンのパラメータの設定値を知りたい](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で公開されている最新のプリザンターのバージョン」となります。このコンソールログ表示の仕様は、.envファイルの{{Version}}に最新よりも前のバージョンを指定した場合も同様ですが、データベースは{{Version}}に準拠した内容で作成されますので、プリザンターの動作上の問題はありません。
```bash
<INFO> Starter.Main: Implem.CodeDefiner 1.4.10.1
```
## 4. プリザンター起動
コンテナを作成、プリザンターを起動します。
```bash
docker compose up -d pleasanter
```
ブラウザでアクセスします。
<http://localhost:50001>
ログイン画面にて「ログインID: Administrator」、「初期パスワード: pleasanter」を入力します。 ログイン後、パスワードの変更を求められますので適宜パスワードを設定してください。
**〈パラメータ設定変更が反映されたことの確認〉**
プリザンターのヘッダーについて、下図赤枠の箇所と同様に検索文字入力欄が表示されていないことを確認してください。

## 5. コンテナの停止と削除
コンテナの停止は以下のコマンドで行います。
```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
```
## 関連情報
[Dockerで起動する](getting-started-pleasanter-docker)
[Dockerイメージを使用しDBにMySQLを指定して起動する](setup-by-docker-image-and-mysql)
[Dockerイメージのプリザンターをバージョンアップする](version-up-pleasanter-docker)