はじめに
Docker版プリザンターも、SQL Serverで動かすことができます。
SQL Serverもコンテナで動かすことができるので、Docker版プリザンターをDocker版SQL Serverで動かす方法を説明します。
Docker版SQL Serverもフルテキスト検索が可能ですのでカスタムイメージとしてビルドを行います。
参考
前提
-
Docker版プリザンターの環境が構築済みであること(DBの作成は不要です)
-
今回はタイムゾーンを日本に、言語を日本語にしています。適宜変更してください。
配置イメージ
いつものように各コンテナのビルド構成を示します。
.
|-- compose.yml
|
+-- app_data_parameters
| +-- Service.json
| +-- Rds.json
|
+-- CodeDefiner
| +-- Dockerfile
|
+-- Pleasanter
| +-- Dockerfile
|
+-- SQLServer
+-- Dockerfile
パラメータファイル
最低限の変更箇所は以下の通りです。
-
Rds.json
- Dbms:
"SQLServer"
を指定します - 各ConnectionString: 環境変数で指定しますので
null
にします
- Dbms:
-
Service.json
- TimeZoneDefault: SQL ServerのベースイメージはLinuxなので、Linuxのタイムゾーン
"Asia/Tokyo"
を指定します - DefaultLanguage: 日本語
"ja"
を指定します
- TimeZoneDefault: SQL ServerのベースイメージはLinuxなので、Linuxのタイムゾーン
compose.yml
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のイメージをベースにして、フルテキスト検索のインストールを行います。
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" ]
環境変数の設定
以下の環境変数を設定します。(各パスワードは適宜変更してください)
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のタイムゾーンを指定します。
イメージのビルド
各サービスをビルドします。
docker compose build --pull pleasanter codedefiner db
--pull
を指定することで、イメージの更新を確認し、最新のイメージを取得します。
イメージのビルドが完了したら、コンテナを起動します。
コンテナの起動
SQL Serverのコンテナを起動します。
docker compose up -d db
CodeDefinerのコンテナを起動し初期化します。
今回は予め Service.json でタイムゾーン、言語を設定していますので /l
, /z
は不要です。
自動化する場合は /y
を付与してください。
docker compose run --rm codedefiner _rds
Pleasanterのコンテナを起動します。
docker compose up -d pleasanter
動作確認
ブラウザで以下のURLにアクセスします。
SQL Serverにつなぎたい
compose.yml > db > ports で 11433 を指定していますので、SSMSや各種対応ツールから接続することができます。
コンテナの停止、ボリュームの削除
前提の記事通りです。
以上です。