---
title: コンテナ実行契約
description: コンテナアプリのイメージが従うルールです。プラットフォームで調整できる点は自動で調整し、バージョンのページにお知らせを残します。
url: https://agentlab.cresclab.com/docs/ja/deploy/runtime-contract
language: ja
updated: 2026-10-06
---

# コンテナ実行契約

コンテナアプリのイメージが従うルールです。プラットフォームで調整できる点は自動で調整し、バージョンのページにお知らせを残します。

## ルール

| 項目               | 要件                                   | 満たさない場合                                                                                                                          |
| ------------------ | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| 起動コマンド       | `CMD` または `ENTRYPOINT` が必要です。 | バージョンは受け付けられません。                                                                                                        |
| ポート             | `$PORT` で HTTP を提供します。         | 設定 → `EXPOSE` → 8080 の順に決まります。[アプリの設定](https://agentlab.cresclab.com/docs/ja/deploy/app-settings.md#port)をご覧ください。 |
| プラットフォーム   | `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` に変えてください。

```dockerfile Dockerfile
FROM nginxinc/nginx-unprivileged:alpine
COPY dist/ /usr/share/nginx/html/
```

> [!TIP] 静的ファイルを配信するだけなら
> [静的サイトとしてデプロイ](https://agentlab.cresclab.com/docs/ja/deploy/static-site.md)してください。nginx を自分で動かす必要はありません。
