Dockerイメージを使用しDBにSQL Serverを指定して起動する
データベースにSQL Serverを指定して、公式Dockerイメージからプリザンターを起動する手順です。
- データベースとしてSQL Serverを使用します。
- タイムゾーンを日本に、言語を日本語にしています。適宜変更してください。
## 前提
本手順は、以下2件のマニュアルの手順通りプリザンターの公式Dockeイメージを使用の上、パラメータファイルを変更して起動できることを前提としています。DBの作成は不要です。
1. [Dockerで起動する](getting-started-pleasanter-docker)
2. [Dockerイメージを使用しパラメータを既定値から変更して起動する](change-parameters-at-docker-image)
未読の場合は上記マニュアルを参照して、プリザンターの公式Dockeイメージを使用の上、パラメータファイルを変更して起動できることを確認してください。
## 1. ファイルを配置する
フォルダを以下のように構成し、ファイルを配置します。
```text
.
|-- compose.yml
|
+-- app_data_parameters
| +-- Service.json
| +-- Rds.json
|
+-- CodeDefiner
| +-- Dockerfile
|
+-- Pleasanter
| +-- Dockerfile
|
+-- SQLServer
+-- Dockerfile
```
### パラメータファイル
最低限の変更箇所は以下の通りです。
- Rds.json
- Dbms: `"SQLServer"` を指定します
- 各ConnectionString: 環境変数で `null` を指定します
- Service.json
- TimeZoneDefault: SQL ServerのベースイメージはLinuxなので、Linuxのタイムゾーン `"Asia/Tokyo"` を指定します
- DefaultLanguage: 日本語 `"ja"` を指定します
### compose.yml
compose.ymlを以下の内容で作成します。
```yaml
services:
pleasanter:
build:
context: .
dockerfile: ./Pleasanter/Dockerfile
args:
- VERSION=${PLEASANTER_VER}
container_name: pleasanter_${PLEASANTER_VER}
environment:
Implem.Pleasanter_Rds_SaConnectionString: ${Implem_Pleasanter_Rds_SQLServer_SaConnectionString}
Implem.Pleasanter_Rds_OwnerConnectionString: ${Implem_Pleasanter_Rds_SQLServer_OwnerConnectionString}
Implem.Pleasanter_Rds_UserConnectionString: ${Implem_Pleasanter_Rds_SQLServer_UserConnectionString}
TZ: ${TZ}
ports:
- '8881:8080'
networks:
- default
codedefiner:
build:
context: .
dockerfile: ./CodeDefiner/Dockerfile
container_name: codedefiner
environment:
Implem.Pleasanter_Rds_SaConnectionString: ${Implem_Pleasanter_Rds_SQLServer_SaConnectionString}
Implem.Pleasanter_Rds_OwnerConnectionString: ${Implem_Pleasanter_Rds_SQLServer_OwnerConnectionString}
Implem.Pleasanter_Rds_UserConnectionString: ${Implem_Pleasanter_Rds_SQLServer_UserConnectionString}
TZ: ${TZ}
networks:
- default
stdin_open: true
db:
build:
context: .
dockerfile: ./SQLServer/Dockerfile
container_name: sqldb
environment:
ACCEPT_EULA: 'Y'
MSSQL_SA_PASSWORD: ${SA_PASSWORD}
TZ: ${TZ}
ports:
- '11433:1433'
networks:
- default
volumes:
- sqlvolume:/var/opt/mssql
volumes:
sqlvolume:
networks:
default:
name: pleasanter_prod_network
```
### SQLServer/Dockerfile
フルテキスト検索を有効にするため、SQL Serverのイメージをベースにして、フルテキスト検索をインストールします。
```Dockerfile
FROM mcr.microsoft.com/mssql/server:2019-latest
USER root
RUN apt-get update && apt-get install -yq gnupg gnupg2 gnupg1 curl apt-transport-https
RUN curl https://packages.microsoft.com/keys/microsoft.asc -o /var/opt/mssql/ms-key.cer \
&& apt-key add /var/opt/mssql/ms-key.cer \
&& curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list -o /etc/apt/sources.list.d/mssql-server-2019.list \
&& apt-get update
RUN apt-get install -y mssql-server-fts
# Cleanup
RUN apt-get clean && rm -rf /var/lib/apt/lists
EXPOSE 1433
USER mssql
ENTRYPOINT [ "/opt/mssql/bin/sqlservr" ]
```
### 環境変数の設定
以下の環境変数を設定します。パスワードは適宜変更してください。
```bash
PLEASANTER_VER=1.4.15.0
SA_PASSWORD=****
Implem_Pleasanter_Rds_SQLServer_SaConnectionString='Server=db;Database=master;UID=sa;PWD=****'
Implem_Pleasanter_Rds_SQLServer_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=****'
Implem_Pleasanter_Rds_SQLServer_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=***'
TZ=Asia/Tokyo
```
- SA\_PASSWORD: SQL ServerのSAパスワードを指定します
- SaConnectionString: パスワードは SA\_PASSWORD と同じものを指定します
- TZ: Linuxのタイムゾーンを指定します
## 2. コンテナイメージをビルドする
各サービスをビルドします。
```bash
docker compose build --pull pleasanter codedefiner db
```
--pull を指定することで、イメージの更新を確認し、最新のイメージを取得します。
## 3. コンテナを起動する
イメージのビルドが完了したら、コンテナを起動します。
SQL Serverのコンテナを起動します。
```bash
docker compose up -d db
```
CodeDefinerのコンテナを起動し初期化します。
```bash
docker compose run --rm codedefiner _rds
```
あらかじめ Service.json でタイムゾーン、言語を設定しているので /l, /z は不要です。自動化する場合は /y を付与してください。
## 4. プリザンターを起動する
### プリザンターのコンテナを起動
プリザンターのコンテナを起動します。
```bash
docker compose up -d pleasanter
```
### 動作確認
ブラウザでアクセスします。
http://localhost:8881
ログイン画面にて「ログインID: Administrator」、「初期パスワード: pleasanter」を入力します。 ログイン後、パスワードの変更を求められますので、適宜パスワードを設定してください。
### SQL Serverにつなぎたい
compose.yml > db > ports で 11433 を指定していますので、SSMSや各種対応ツールから接続できます。
## 5. コンテナの停止と削除
### コンテナを停止する
コンテナの停止は、以下のコマンドを実行します。
```bash
docker compose stop
```
コンテナを停止してもDBデータは削除されません。
### 停止したコンテナを再開する
停止したコンテナを再開する場合は、以下のコマンドを実行します。
```bash
docker compose start
```
コンテナを停止してもDBデータは削除されません。再開する際にはデータがそのまま利用できます。
### コンテナを削除する
コンテナの削除は、以下のコマンドを実行します。コンテナを削除してもDBデータ(ボリューム)は削除されません。
```bash
docker compose down
```
### コンテナを再作成する
なおコンテナを削除した場合は、再開はできません。
起動したい場合は、以下のコマンドで、コンテナを作成してください。これによりDBのコンテナも一緒に作成されて、残っているDBデータをそのまま利用できます。
```bash
docker compose up -d pleasanter
```
### コンテナ削除と同時にデータを削除する
コンテナを削除する時に同時にデータ(ボリューム)を削除する場合は、ボリュームを削除するオプション(-v)を付けて実行します。
```bash
docker compose down -v
```
## 関連情報
[Dockerで起動する](getting-started-pleasanter-docker)
[Dockerイメージを使用しパラメータを既定値から変更して起動する](change-parameters-at-docker-image)
[Dockerイメージのプリザンターをバージョンアップする](version-up-pleasanter-docker)