Docker でのインストール(外部 Nginx)
この構成では、NocoBase アプリケーションコンテナと Nginx コンテナを分けて実行します。まず Docker でのインストール(内蔵 Nginx) を完了し、その後エントリを外部 Nginx コンテナへ切り替える形です。
この構成を使う場面
- NocoBase と Web サーバーを分けて運用したい
- Nginx の設定や公開ポートを自分で管理したい
- 公開するのはプロキシコンテナだけにしたい
docker-compose.yml の例
full イメージが必要な場合は、latest-no-nginx を latest-full-no-nginx に置き換えてください。
13000:80 のマッピングは、ホストの標準ポートを直接使わずにローカルでテストしやすくするためのものです。本番環境では通常 13000:80 のままにはせず 、外部 Nginx コンテナをホストの 80 と 443 に直接マッピングします。
重要なポイント
NOCOBASE_EXTRACT_CLIENT_ASSETS=trueでクライアントアセットを抽出し、プロキシ設定を生成しますNOCOBASE_PROXY_PROVIDER=nginxで Nginx 用の設定を生成しますNOCOBASE_PROXY_UPSTREAM_HOST=appにより、Nginx コンテナは Compose ネットワーク経由でappサービスへ接続します./storageはappとnginxの両方にマウントし、プロキシ設定、静的アセット、アップロードファイルを共有できるようにしますnginxコンテナはnocobase.confが生成されるまで待機し、その後ln -sfで/etc/nginx/conf.d/default.confにリンクしてから起動します- 自動生成される設定は、
APP_PUBLIC_PATH配下の/files/とルートの/files/の両方を NocoBase に転送し、認証付きのファイルプレビューとダウンロードを処理します - 外部 Nginx コンテナを使う場合は、ホスト側のポートマッピングを
nginxコンテナで処理します。テスト時は13000:80から始められますが、本番環境では通常ホストの80と443を直接公開し、appサービスはホストへポートを公開する必要はありません
ホストにインストールした Nginx を使う場合
Nginx を Docker コンテナではなくホストに直接インストールしている場合は、別の docker-compose.yml を使うのがおすすめです。この構成では app サービスがホストへ直接ポートを公開し、プロキシ関連の環境変数もホスト視点の値にする必要があります。
次のような docker-compose.yml を使えます。
この構成では:
NOCOBASE_PROXY_STORAGE_PATHはホスト上のstorageディレクトリの絶対パスにしますNOCOBASE_PROXY_UPSTREAM_HOSTは127.0.0.1にします- ローカル Nginx が
127.0.0.1:13000経由でアプリへアクセスできるよう、appサービスはportsを残します
そのうえで、app コンテナ起動後に設定ファイルが生成されるのを待ち、ホスト側の Nginx 設定ディレクトリへリンクします。
ホスト側の Nginx が conf.d ディレクトリを使っていない場合は、リンク先を自分の設定パスに置き換えてください。通常は nocobase.conf を http {} から include するファイルとしてそのまま使うほうが安全で、内容を手で分解してコピーするのはおすすめしません。
自動生成された設定を使わずに Nginx を自分で管理する場合は、/files/ と APP_PUBLIC_PATH 配下の対応するルートを、SPA フォールバックルールより前で NocoBase に転送してください。完全な例は Nginx リバースプロキシを参照してください。
関連リンク
- Docker でのインストール(内蔵 Nginx) — まずは単一コンテナ構成から始める
- Nginx 静的リソースプロキシ — 生成される Nginx 設定の詳細

