3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker版プリザンターをSQL Serverで動かす方法

Posted at

はじめに

Docker版プリザンターも、SQL Serverで動かすことができます。
SQL Serverもコンテナで動かすことができるので、Docker版プリザンターをDocker版SQL Serverで動かす方法を説明します。
Docker版SQL Serverもフルテキスト検索が可能ですのでカスタムイメージとしてビルドを行います。

参考

前提

配置イメージ

いつものように各コンテナのビルド構成を示します。

.
|-- 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

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にアクセスします。

http://localhost:8881

SQL Serverにつなぎたい

compose.yml > db > ports で 11433 を指定していますので、SSMSや各種対応ツールから接続することができます。

コンテナの停止、ボリュームの削除

前提の記事通りです。

以上です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?