ドキュメントが一新されました!旧ドキュメントは doc.newapi.pro
New APINew API
利用ガイドインストールAPI リファレンスAIアプリケーションヘルプ&サポートビジネス協力

Docker Compose 設定説明

このドキュメントでは、New API の Docker Compose 設定オプションについて詳しく説明します。これらのオプションは、さまざまなデプロイシナリオで使用できます。

基本的な設定構造

Docker Compose 設定ファイル docker-compose.yml は、New API サービスとその依存サービス(MySQL、Redis など)のデプロイ方法を定義します。

標準設定(本番環境推奨)

以下は、ほとんどの本番環境に適した標準的な Docker Compose 設定です。

# New-API Docker Compose 設定
#
# クイックスタート:
#   1. docker-compose up -d
#   2. http://localhost:3000 でアクセス
#
# PostgreSQL の代わりに MySQL を使用する場合:
#   1. postgres サービスと SQL_DSN 15行目をコメントアウト
#   2. mysql サービスと SQL_DSN 16行目をコメント解除
#   3. depends_on (28行目) の mysql をコメント解除
#   4. volumes セクション (64行目) の mysql_data をコメント解除
#
# ⚠️ 重要: 本番環境にデプロイする前に、すべてのデフォルトパスワードを変更してください!

version: '3.4' # 古い Docker バージョンとの互換性のため

services:
  new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - '3000:3000'
    volumes:
      - ./data:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=postgresql://root:123456@postgres:5432/new-api # ⚠️ 重要: 本番環境ではこのパスワードを変更してください!
      #      - SQL_DSN=root:123456@tcp(mysql:3306)/new-api  # mysql サービスを指します。MySQL を使用する場合はコメント解除してください
      - REDIS_CONN_STRING=redis://redis
      - TZ=Asia/Shanghai
      - ERROR_LOG_ENABLED=true # エラーログ記録を有効にするかどうか
      - BATCH_UPDATE_ENABLED=true # バッチ更新を有効にするかどうか
    #      - STREAMING_TIMEOUT=300  # ストリーミングモードの無応答タイムアウト時間(秒単位)、デフォルトは120秒。空の補完が発生する場合は、より大きな値に設定してみてください。
    #      - SESSION_SECRET=random_string  # マルチノードデプロイメント時に設定。このランダム文字列は必ず変更してください!!
    #      - SYNC_FREQUENCY=60  # 定期的なデータベース同期が必要な場合はコメント解除してください

    depends_on:
      - redis
      - postgres
    #      - mysql  # MySQL を使用する場合はコメント解除してください
    healthcheck:
      test:
        [
          'CMD-SHELL',
          "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1",
        ]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:latest
    container_name: redis
    restart: always

  postgres:
    image: postgres:15
    container_name: postgres
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: 123456 # ⚠️ 重要: 本番環境ではこのパスワードを変更してください!
      POSTGRES_DB: new-api
    volumes:
      - pg_data:/var/lib/postgresql/data
#    ports:
#      - "5432:5432"  # Docker の外部から PostgreSQL にアクセスする必要がある場合はコメント解除してください

#  mysql:
#    image: mysql:8.2
#    container_name: mysql
#    restart: always
#    environment:
#      MYSQL_ROOT_PASSWORD: 123456  # ⚠️ 重要: 本番環境ではこのパスワードを変更してください!
#      MYSQL_DATABASE: new-api
#    volumes:
#      - mysql_data:/var/lib/mysql
#    ports:
#      - "3306:3306"  # Docker の外部から MySQL にアクセスする必要がある場合はコメント解除してください

volumes:
  pg_data:
#  mysql_data:

簡易設定(テスト環境向け)

テスト目的のみの場合は、New API サービス自体のみを含む以下の簡易バージョンを使用できます。

services:
  new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    ports:
      - '3000:3000'
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/data

設定説明

New API サービス設定

パラメータ説明
imageイメージ名。通常は最新バージョンを取得するためにcalciumion/new-api:latestを使用します。
container_nameコンテナ名。カスタマイズ可能です。
restartコンテナの再起動ポリシー。サービスの自動再起動を確実にするため、alwaysに設定することを推奨します。
command起動コマンド。起動パラメータをカスタマイズできます。
portsポートマッピング。デフォルトでは、コンテナ内の3000番ポートをホストの3000番ポートにマッピングします。
volumesデータボリュームマッピング。データの永続化を保証します。
environment環境変数設定。New API の動作を設定するために使用します。
depends_on依存サービス。正しい順序で起動することを保証します。
healthcheckヘルスチェック設定。サービスの状態を監視するために使用します。

環境変数説明

New API は複数の環境変数設定をサポートしており、以下はよく使用されるものです。

環境変数説明示例
SQL_DSNデータベース接続文字列root:123456@tcp(mysql:3306)/new-api
REDIS_CONN_STRINGRedis 接続文字列redis://redis
TZタイムゾーン設定Asia/Shanghai
SESSION_SECRETセッションキー(マルチノードデプロイメントでは必須)your_random_string
NODE_TYPEノードタイプ(マスター/スレーブ)masterまたはslave
SYNC_FREQUENCY同期頻度(秒)60

より完全な環境変数リストについては、環境変数設定ガイドを参照してください。

マルチノードデプロイメント設定

マルチノードデプロイメントシナリオでは、マスターノードとスレーブノードの設定が若干異なります。

マスターノード設定

services:
  new-api-master:
    image: calciumion/new-api:latest
    container_name: new-api-master
    restart: always
    ports:
      - '3000:3000'
    environment:
      - SQL_DSN=root:123456@tcp(mysql:3306)/new-api
      - REDIS_CONN_STRING=redis://redis
      - SESSION_SECRET=your_unique_session_secret
      - CRYPTO_SECRET=your_unique_crypto_secret
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/data

スレーブノード設定

services:
  new-api-slave:
    image: calciumion/new-api:latest
    container_name: new-api-slave
    restart: always
    ports:
      - '3001:3000' # ポートマッピングが異なることに注意
    environment:
      - SQL_DSN=root:123456@tcp(mysql:3306)/new-api
      - REDIS_CONN_STRING=redis://redis
      - SESSION_SECRET=your_unique_session_secret # マスターノードと同じである必要があります
      - CRYPTO_SECRET=your_unique_crypto_secret # マスターノードと同じである必要があります
      - NODE_TYPE=slave # スレーブノードとして設定
      - SYNC_FREQUENCY=60
      - TZ=Asia/Shanghai
    volumes:
      - ./data-slave:/data

使用方法

インストール

設定をdocker-compose.ymlファイルとして保存し、同じディレクトリで以下を実行します。

docker compose up -d

ログの確認

docker compose logs -f

サービスの停止

docker compose down

ヒント

Docker Compose のより詳しい使用方法については、Docker Compose インストールガイドを参照してください。

このガイドはいかがですか?

最終更新