コンテナ実行契約
コンテナアプリのイメージが従うルールです。プラットフォームで調整できる点は自動で調整し、バージョンのページにお知らせを残します。
ルール#
| 項目 | 要件 | 満たさない場合 |
|---|---|---|
| 起動コマンド | CMD または ENTRYPOINT が必要です。 | バージョンは受け付けられません。 |
| ポート | $PORT で HTTP を提供します。 | 設定 → EXPOSE → 8080 の順に決まります。アプリの設定をご覧ください。 |
| プラットフォーム | linux/amd64。 | 他のプラットフォームのイメージはプッシュ時に拒否されます。 |
| ユーザー | root 以外の USER を推奨します。 | root または未指定の場合は uid 10001、グループ 0 で実行します。イメージにないユーザーを指定したバージョンは受け付けられません。 |
| ファイルシステム | /tmp 以外は読み取り専用です。 | 他の場所への書き込みは失敗します。 |
| クラウドの認証情報 | 提供されません。 | 外部サービスにはアプリのシークレットを使って接続します。 |
uid 10001 で実行される場合、イメージが読むファイルはグループ 0 から読める必要があります。
お知らせ#
プラットフォームが調整した内容は、バージョンのページとイメージの「チェック」タブにお知らせとして表示されます。AI ツールはデプロイの状態から同じコードを読み取れます。
| コード | 意味 | 対応 |
|---|---|---|
imageUserForced | イメージが root で実行されるため、uid 10001 で実行します。 | 不要です。お知らせを消すには、Dockerfile で root 以外の USER を設定します。 |
imagePortFromExpose | アプリはイメージが EXPOSE している 1 つのポートで待ち受けます。 | 不要です。 |
imagePortsAmbiguous | イメージが複数のポートを EXPOSE していて 8080 がないため 8080 で実行しますが、サーバーの待ち受けポートではない可能性が高いです。 | 「設定 › 実行設定 › ポート」で正しいポートを選んでサービスを再起動するか、Dockerfile でそのポートだけを EXPOSE します。 |
起動時にファイルを書き込むイメージ#
起動時に /tmp 以外へ書き込むイメージがあります。たとえば nginx:alpine は /var/cache/nginx に書き込むため、読み取り専用のファイルシステムでは起動に失敗します。書き込みが不要なイメージを使うか、書き込み先を /tmp に変えてください。
FROM nginxinc/nginx-unprivileged:alpine
COPY dist/ /usr/share/nginx/html/静的ファイルを配信するだけなら
静的サイトとしてデプロイしてください。nginx を自分で動かす必要はありません。