version: '3.8'

services:
  redmine:
    # image: docker.io/redmine:3.4.4
    # image: docker.io/redmine:4.2.10
    # image: docker.io/redmine:5.1.12
    image: docker.io/redmine:6.1.3

    container_name: redmine-app
    restart: always
    
    # ----------------------------------------
    # 環境変数（権限・データベース設定）
    # ----------------------------------------
    environment:
      # /redmine以下で動くようにする
      - RAILS_RELATIVE_URL_ROOT=/redmine

      # ホスト側のUID/GID（1002）に合わせてコンテナ内の権限を同期
      - USERID=1002
      - GROUPID=1002
      
      # データベース接続設定
      - REDMINE_DB_MYSQL=host.docker.internal
      - REDMINE_DB_USERNAME=redmine
      - REDMINE_DB_PASSWORD=TtQreDUi-cMg0YXc
      - REDMINE_DB_DATABASE=redmine

    # ----------------------------------------
    # ボリュームマウント（データの永続化）
    # ----------------------------------------
    volumes:
      # ホストの /var/lib/redmine/files をコンテナの files ディレクトリにマウント
      - /var/lib/redmine/files:/usr/src/redmine/files
      - /etc/redmine/config.ru:/usr/src/redmine/config.ru:ro

    # ----------------------------------------
    # リソース制限（一人運用向け省エネ設定）
    # ----------------------------------------
    # メモリを256MBに制限し、溢れた分は512MBまでスワップに逃がす
    mem_limit: 256m
    memswap_limit: 512m

    # ----------------------------------------
    # ネットワーク設定（ホストのMySQLへの接続）
    # ----------------------------------------
    # コンテナ内からホスト側（AlmaLinux）のIPを host.docker.internal として引けるようにする
    extra_hosts:
      - "host.docker.internal:host-gateway"
    ports:
      - "3000:3000"
    # ----------------------------------------
    # ログ肥大化対策
    # ----------------------------------------
    # ログファイルを10MB×3世代までに制限
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
