環境

実行環境

ハードウェア

Raspberry Pi 4

OS

Ubuntu 24.04 LTS

前提条件

  • Dockerがインストールされていること

手順

PleasanterとPostgreSQLを同じ端末上に構築する

  1. ホームディレクトリにコンテナ用のディレクトリを作成する

    # ディレクトリを作成
    $ mkdir -p ~/docker/pleasanter
    
    # ディレクトリ移動
    $ cd ~/docker/pleasanter
  2. 環境変数を定義する .env ファイルを作成する

    # 環境変数を定義するためのファイルを作成
    $ nano .env
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=postgres
    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=postgres'
    Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=postgres'
    Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=postgres'
  3. コンテナを起動するために`compose.yml`を作成する

    # コンテナの定義情報を記載するファイルを作成
    $ nano compose.yml
    services:
      db:
        container_name: postgres
        image: postgres:15
        ports:
          - "15432:5432"
        environment:
          - POSTGRES_USER
          - POSTGRES_PASSWORD
          - POSTGRES_DB
          - POSTGRES_HOST_AUTH_METHOD
          - POSTGRES_INITDB_ARGS
        restart: always
        volumes:
          - /var/dockervol/psql/data:/var/lib/postgresql/data
        networks:
          pleasanter_net:
            ipv4_address: 192.16.5.2
        logging:
          driver: "json-file"
          options:
            max-size: "1m"       # 1ファイルの最大サイズ
            max-file: "3"         # 保持するログファイルの最大数
    
    
      pleasanter:
        container_name: pleasanter
        image: implem/pleasanter
        depends_on:
          - db
        ports:
          - "13500:8080"
        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}
        restart: always
        networks:
          pleasanter_net:
            ipv4_address: 192.16.5.3
        logging:
          driver: "json-file"
          options:
            max-size: "1m"
            max-file: "3"
    
    
      codedefiner:
        container_name: codedefiner
        image: implem/pleasanter:codedefiner
        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}
        networks:
          pleasanter_net:
            ipv4_address: 192.16.5.4
        logging:
          driver: "json-file"
          options:
            max-size: "1m"
            max-file: "3"
    
    networks:
      pleasanter_net:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 192.16.5.0/24
  4. codedefinerを実行する

    # オプションを指定して日本環境で実行する
    $ docker compose run --rm codedefiner _rds /l "ja" /z "Asia/Tokyo"
    
    # 下記が表示されるので[y]を入力
    # Type y (yes) if the license is correct, otherwise type n (no).
  5. pleasanterを起動する

    # バックグラウンドで実行
    $ docker compose up -d pleasanter
  6. http://[IP_address_by_host]:13500/ にアクセスしてログイン画面が表示されることを確認

PleasanterとPostgresを別端末で起動する手順

  1. DB側の端末にpostgres用の.envファイルを作成する

    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=postgres
    POSTGRES_DB=postgres
    POSTGRES_HOST_AUTH_METHOD=scram-sha-256
    POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256"
  2. postgres用のcompose.ymlを作成

    services:
      db:
        container_name: postgres_pleasanter
        image: postgres:16
        ports:
          - "25432:5432"
        environment:
          - POSTGRES_USER
          - POSTGRES_PASSWORD
          - POSTGRES_DB
          - POSTGRES_HOST_AUTH_METHOD
          - POSTGRES_INITDB_ARGS
        volumes:
          - .pg_data:/var/lib/postgresql/data
        logging:
          driver: "json-file"
          options:
            max-size: "1m"       # 1ファイルの最大サイズ
            max-file: "3"         # 保持するログファイルの最大数
        restart: always
  3. postgresを起動

    $ docker compose up -d
  4. pleasanter側の端末に.envファイルを作成

    Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=192.168.3.100:25432;Database=postgres;UID=postgres;PWD=postgres'
    Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=192.168.3.100:25432;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=postgres'
    Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=192.168.3.100:25432;Database=#ServiceName#;UID=#ServiceName#_User;PWD=postgres'
  5. pleasanterのcomposeファイルを作成

    services:
      pleasanter:
        container_name: pleasanter_pg
        image: implem/pleasanter:1.4.14.0
        ports:
          - "23500:8080"
        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}
        restart: always
        logging:
          driver: "json-file"
          options:
            max-size: "1m"
            max-file: "3"
    
    
      codedefiner:
        container_name: codedefiner
        image: 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}
        logging:
          driver: "json-file"
          options:
            max-size: "1m"
            max-file: "3"
  6. codedefinerを実行する

    # オプションを指定して日本環境で実行する
    $ docker compose run --rm codedefiner _rds /l "ja" /z "Asia/Tokyo"
    
    # 下記が表示されるので[y]を入力
    # Type y (yes) if the license is correct, otherwise type n (no).
  7. pleasanterを起動する

    # バックグラウンドで実行
    $ docker compose up -d pleasanter
  8. http://[IP_address_by_host]:13500/ にアクセスしてログイン画面が表示されることを確認

参考