Docker イメージをプッシュしてデプロイする
agentlab CLI(アルファ版)をインストールしてサインインし、linux/amd64 のイメージを docker push で組織のレジストリにプッシュして、プロジェクトのバージョンとしてデプロイします。有料プランのみ。
始める前に#
- Pro、Team、Business のいずれかのプラン。Free プランにはイメージレジストリがありません。ソースコードからまたはDockerfile からデプロイしてください。
- デプロイできるロール。
- Docker と、CLI 用の Node.js 24 以降。CLI は macOS、Linux、Windows の x64 と arm64 で動きます。
1. CLI をインストールする#
npm install --global @crescendolab/agentlab-cli@alpha
agentlab --versionCLI はアルファ版です
安定版が出るまで、コマンドや動作が変わることがあります。上のとおり alpha タグでインストールしてください。
Windows ではパッケージのインストールスクリプトを許可してください。docker-credential-agentlab.exe が npm のコマンド用ファイルの隣に置かれ、Docker から見つけられるようになります。
2. サインインして Docker を設定する#
agentlab login
agentlab auth configure-docker
agentlab statusagentlab login でブラウザが開くので、サインインして組織を選びます。agentlab auth configure-docker は Agent Lab の認証ヘルパーを Docker の設定に追加し、docker push があなたとしてサインインするようにします。docker login は不要です。agentlab status はアカウント、組織、サインインの有効期限を表示します。
1 回のサインインは 1 つの組織に対応します。組織を切り替えるには agentlab login をもう一度実行します。
3. ビルドしてプッシュする#
イメージのパスは registry.agentlab.cresclab.com/<組織 id>/<名前>:<タグ> です。組織 id は UUID で、イメージレジストリ › 設定手順 に表示されるコマンドには入力済みです。
docker build --platform linux/amd64 -t registry.agentlab.cresclab.com/<組織 id>/orders-api:v1 .
docker push registry.agentlab.cresclab.com/<組織 id>/orders-api:v1linux/amd64 でビルドしてください。他のプラットフォームのイメージはプッシュ時に拒否されます。Apple シリコンの Mac では --platform linux/amd64 が必須です。
プッシュ後、イメージはコンテナ実行規約に照らしてチェックされ、スキャンがオンなら脆弱性もスキャンされます。チェック は チェック中 のあと、合格、警告あり、拒否 のいずれかになります。プッシュしただけでは公開中のバージョンは変わりません。
4. イメージをデプロイする#
- プロジェクトの「デプロイ」タブを開き、新しいバージョンのデプロイ元 で イメージ を選びます。
- リポジトリ と タグまたは digest を選び、イメージをデプロイ を選びます。
イメージレジストリ でリポジトリを開き、プロジェクトにデプロイ を使うこともできます。
バージョンを作る時点でタグは digest に解決されるため、あとで同じタグをプッシュしてもそのバージョンは変わりません。環境が本番環境だけなら、チェックに合格したバージョンは自動で公開されます。複数の環境がある場合は「デプロイ」タブで公開のタイミングを選びます(バージョン)。拒否されたイメージはデプロイできません。警告あり のイメージは誰かの確認を待ちます。
CI からプッシュする#
CI では CLI の代わりにロボットトークンを使います。オーナーか管理者が デプロイ設定 › ロボットトークン で作成します。トークンは一度しか表示されません。プッシュしかできず、作成した人ではなく組織に属します。
echo "$AGENTLAB_ROBOT_TOKEN" | docker login registry.agentlab.cresclab.com -u agentlab --password-stdin
docker push registry.agentlab.cresclab.com/<組織 id>/orders-api:$GIT_SHAユーザー名はチェックされません。取り消しも同じ場所で行います。
イメージが満たすべきルール#
プッシュしたイメージにも、Dockerfile からビルドしたイメージにも同じルールが適用されます。全体はコンテナ実行規約をご覧ください。
| ルール | 要件 |
|---|---|
| プラットフォーム | linux/amd64 のみ。 |
| 起動コマンド | CMD または ENTRYPOINT。 |
| ポート | $PORT で HTTP を提供。ポートはプロジェクトのポート設定、なければイメージが EXPOSE する 1 つのポート、なければ 8080。 |
| ユーザー | root 以外の USER を推奨。root や USER なしの場合は uid 10001、グループ 0 で実行。 |
| ファイルシステム | /tmp 以外は読み取り専用。 |
| サイズ | 2.5 GiB まで。 |
保持されるもの#
- リポジトリごとに 5 バージョン。プッシュやビルドで 6 つ目が来ると、使われていない最も古いイメージが削除されます。公開中のもの、プロジェクトの直近 5 バージョンに含まれるもの、スケジュールジョブが実行するものは使用中とみなされます。リポジトリのイメージがすべて使用中なら、プッシュは拒否されます。
- プランごとのストレージ:Pro 50 GB、Team 250 GB、Business は契約によります。
- プッシュしたイメージの脆弱性スキャンは Team と Business で使え、既定はオフです。デプロイ設定 で プッシュしたイメージをスキャン をオンにします。
- ソースコードからビルドしたプロジェクトのイメージもここに、プロジェクト名のリポジトリとして保存されます。
- イメージレジストリ から、イメージやリポジトリ全体を削除できます(管理者のみ)。使用中のイメージは削除できません。
- プルはできません。レジストリはデプロイ用のプッシュだけを受け付け、
docker pullは拒否されます。
CLI コマンド#
| コマンド | 内容 |
|---|---|
agentlab login [--org <uuid>] | ブラウザでサインインします。--org で組織をあらかじめ選べます。 |
agentlab auth configure-docker | Docker がレジストリに Agent Lab の認証ヘルパーを使うよう設定します。 |
agentlab status [--json] | サインイン中のアカウント、組織、サインインの有効期限。 |
agentlab logout | サインアウトし、このコンピューターのサインイン情報とレジストリ認証情報を削除します。 |
- サインイン情報は OS のキーチェーンに、キーチェーンがない場合は
~/.config/agentlab/credentials.json(権限0600)に保存されます。 - オーナーと管理者は デプロイ設定 で agentlab CLI でのサインインを許可 をオフにできます。サインイン済みの CLI もほどなく使えなくなります。サインイン済みの CLI にすべてのサインインが表示され、それぞれ サインインを取り消す ことができます。
- CLI を削除するには、
agentlab logoutのあとnpm uninstall --global @crescendolab/agentlab-cliを実行します。
プッシュに失敗したとき#
| 表示 | 原因と対処 |
|---|---|
unauthorized | agentlab login をもう一度実行します。以前このレジストリに docker login したことがあると、Docker はそちらを先に使います:docker logout registry.agentlab.cresclab.com。 |
プランに触れた denied | プランにイメージレジストリがないか、ストレージがいっぱいです。オーナーか管理者が 設定 › プランとお支払い でアップグレードできます。 |
プラットフォームに触れた denied | イメージが linux/amd64 ではありません。--platform linux/amd64 を付けてビルドし直します。 |
バージョン上限に触れた denied | リポジトリのイメージがすべて使用中です。先に新しいバージョンをデプロイするか、新しいリポジトリにプッシュします。 |
| プッシュ後に 拒否 | イメージが上のルールに反しています。チェック結果にどのルールかが表示されます。 |