LoginSignup
19
14

More than 1 year has passed since last update.

PleasanterをDockerで動かす

Last updated at Posted at 2022-08-08

早速ですがPleasanter(プリザンター)をビルドしてDockerコンテナ上で動かそうと思います。
常に最新のPleasanterをお手軽に試せるようになりますね。

今回は公式のリポジトリにあるDocker Composeファイルを使ってみます。

Composeの定義を読む

version: '3.5'

services:
  Implem.Pleasanter:
    build:
      context: .
      dockerfile: ./Implem.Pleasanter/Dockerfile
    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}
    image: implem.pleasanter
    container_name: pleasanter
    depends_on:
      - db
    networks:
      - default

特に変わった点はないですが環境変数の記述が冗長に見えます。
これはPleasanterが参照する環境変数名には . (ピリオド)が含まれていて実行環境によっては変数定義がエラーになるのを避けるための工夫です。
一度 _ (アンダースコア)に置きかえた変数名で実行環境に定義し、それを参照しつつ本来の変数名でコンテナに渡してあげます。

CodeDefinerのコンテナも同様です。

データベースはどうしているか

version: '3.5'

services:
  db:
    container_name: postgresql
    build:
      context: .
      dockerfile: ./docker-build/postgresql/Dockerfile
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
    ports:
      - "5432:5432"
    volumes:
      - ./docker-build/postgresql/init:/docker-entrypoint-initdb.d
    networks:
      - default

DBはPostgreSQLを使うようになっています。

ユーザやDBの指定は環境変数で渡しています。 services/db/environmentがその定義ですので適宜設定します。
環境変数に定義したものはPleasanterが参照するデータベース接続文字列にも指定します。

コンテナ定義には公式イメージを使います。初期化機能があり、この機能を使って全文検索用のモジュールを一緒にインストールしてしまいます。

volumesで初期化処理を所定のポイントにアタッチします。
こうすることで任意の初期化処理を実行してくれます。
初期化機能に関してはこれらのエントリが分かり易かったです。

ビルドする

必要な環境変数の設定をしてビルドしていきます。

export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=<任意のSaパスワード>
export POSTGRES_DB=postgres

export Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=db;Database=postgres;UID=postgres;PWD=<任意のSaパスワード>'
export Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=<任意のOwnerパスワード>'
export Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=<任意のUserパスワード>'

SaConnectionStringの注意点です。

  • Server: Composeファイルのservicesで定義した名前にします(db)
  • Database: 環境変数のPOSTGRES_DBと同じにします
  • UID: 環境変数のPOSTGRES_USERと同じにします
  • PWD: 環境変数のPOSTGRES_PASSWORDと同じにします

ではビルドしましょう。

docker-compose build

Windowsの場合は環境変数に以下の2つを指定してください。

  1. DOCKER_BUILDKIT1
  2. COMPOSE_DOCKER_CLI_BUILDtrue

CodeDefinerの実行とPleasanterの起動

初回の場合はCodeDefinerを実行します。

docker-compose run --rm --name codedefiner Implem.CodeDefiner _rds

Pleasanterを起動します。

docker-compose run --rm -d -p 50001:80 --name pleasanter Implem.Pleasanter

-p50001がブラウザ等でアクセスする際のURLのポートになります。(必要に応じて適宜変更してください)
http://localhost:50001/ でアクセスしてみます。
いかがでしょうか、いつもの画面が表示されたでしょうか。

最後に終了します。

docker-compose down
19
14
5

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
19
14