とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

Pleasanter 1.4.8.1をDocker Composeで動かす

先日、株式会社インプリム様と弊社がパートナー契約を締結したこともあり、社内にPleasanterの検証環境が必要になりました。

devops-blog.virtualtech.jp

Pleasanterのインストール手順はユーザーマニュアルにある通りなのですが、見ての通り、色々面倒ですよね。というわけで、お手軽にDockerで立ち上げる方法を紹介します。

compose.ymlの用意

まず、以下のふたつのYAMLを用意してください。ここではファイル名ひとつめのファイル名を compose.yml 、ふたつめを codedefiner.yml としました。

services:
  db:
    container_name: postgres
    image: docker.io/library/postgres:16
    ports:
      - "5432:5432"
    volumes:
      - postgresql:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_HOST_AUTH_METHOD: ${POSTGRES_HOST_AUTH_METHOD}
      POSTGRES_INITDB_ARGS: ${POSTGRES_INITDB_ARGS}

  pleasanter:
    container_name: pleasanter
    image: docker.io/implem/pleasanter:1.4.8.1
    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}
    ports:
      - "8080:8080"

volumes:
  postgresql:
services:
  codedefiner:
    container_name: codedefiner
    image: docker.io/implem/pleasanter:codedefiner
    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}
    command: "_rds /y /l \"ja\" /z \"Asia/Tokyo\""

.envの用意

同じディレクトリ内に、パスワードを記述した .env ファイルを用意しておきましょう。中身は適宜書き換えてください。

POSTGRES_USER=postgres
POSTGRES_PASSWORD=PostgreSQLのportgresユーザーのパスワード
POSTGRES_DB=postgres
POSTGRES_HOST_AUTH_METHOD=scram-sha-256
POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256"
Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=db;Database=postgres;UID=postgres;PWD=PostgreSQLのportgresユーザーのパスワード'
Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=PleasanterのDBオーナーのパスワード'
Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=PleasanterのDBユーザーのパスワード'

データベースの起動

Pleasanterをはじめて起動する際には、以下の手順が必要です。

  1. データベースを起動する
  2. CodeDefinerでデータベースを初期化する
  3. Pleasanterを起動する

そのため、いきなり docker compose up をしても、Pleasanterは動いてくれません。まずデータベースコンテナだけを起動します。

$ docker compose up db -d

CodeDefinerの実行

データベースコンテナが起動したら、CodeDefinerによる初期化を行います。

$ docker compose -f ./codedefiner.yml up

Pleasanter 1.4.8.1では、CodeDefinerの実行中にライセンスの確認が行われ、対話的にY/nを入力しなければならなくなりました。そのため従来のようにバックグラウンドでCodeDefinerを起動しようとすると、対話的な入力ができず、ここでコケてしまいます。該当部分の変更はこちら

これをスキップするには、CodeDefinerの起動オプションに /y を追加します。ここではYAML内のcommandで、言語やタイムゾーンと同様に指定を行っています。

Pleasanterの起動

初期化が完了したら、普通にPleasanterを起動しましょう。以後はデータベースといっしょに、Composeでup/downが可能になります。

$ docker compose up -d