開発中、itam-lite は pnpm dev と開発用のデータベースで動いています。この章では Docker でサーバーにデプロイし、独立して動作させます。アプリには Dockerfile とデプロイ用のスキル nocobase-deployment が付属しており、エージェントはそれに従います。Docker と PM2 のどちらにするかは、デプロイ方法を選ぶ を参照してください。
1. サーバーを準備する
Docker と Docker Compose プラグインをインストールした Linux サーバーで、開発マシンから SSH で接続できるものを用意します。デプロイ先のディレクトリ、URL、管理者のパスワードを決めておきます。ドメイン、HTTPS、リバースプロキシはサーバー側で設定します。
2. エージェントにデプロイさせる
itam-lite ディレクトリで新しいセッションを始め、山かっこの部分を置き換えます。
このアプリを Docker でサーバー <user>@<server address> の <path>/itam-lite にデプロイし、https://<domain>/itam/ で公開してください。データベースは新しい空のものを使ってください。
コンテナを作り直しても何も失われないよう、設定とデータはデプロイ先のディレクトリに置いてください。管理者のパスワードは別途伝えます。コードやレポートには書かないでください。
デプロイ後、サインインしてデバイスを 1 台作成し、コンテナを作り直して、デバイスが残っていることを確認してください。最後に、HTTPS など、まだ設定されていないものを教えてください。エージェントが行ったこと:
| ステップ | 内容 |
|---|---|
| ビルド | 開発マシンでサーバーのプラットフォーム向けに dist/ をビルドし、Dockerfile でイメージ itam-lite:1 にまとめて、サーバーに転送します |
| 設定 | デプロイ先のディレクトリで、イメージのコマンドを使って config/config.yml(アプリのシークレットを含む)を生成し、管理者のパスワードを設定します |
| 実行 | compose.yml を書きます。設定は /app/config.yml に読み取り専用でマウントし、storage/ は /app/storage にマウントし、APP_BASE_PATH を /itam に設定します |
| 確認 | config check --connect で設定とデータベースの接続を確認し、up -d --wait でヘルスチェックを通過するまで待ちます |
すべてのコマンドと Compose ファイルの全体は、Docker でデプロイする を参照してください。
3. 設定、データ、イメージを分けて管理する
| 場所 | 管理方法 | |
|---|---|---|
| イメージ | サーバー上の itam-lite:1、またはイメージレジストリ | バージョンごとに 1 つのタグ。いつでもコードからビルドし直せます |
| 設定 | デプロイ先のディレクトリの config/config.yml | シークレットを含むため、コードリポジトリにもイメージにも入れません。データベースと一緒にバックアップし、生成し直さないでください |
| データ | デプロイ先のディレクトリの storage/:SQLite のデータベースとアップロードされたファイル | 定期的に、またアップグレードのたびに事前にバックアップします |
新しいデータベースには、マイグレーションで作成されたテーブル、初期管理者、3 つのロールだけが入っています。開発中の Alice、Ben、Cathy や、デバイスと申請は引き継がれません。本番稼働後は、System settings › Users で実際のユーザーを作成し、ロールを割り当ててください。
4. 確認する
https://<domain>/itam/ を開き、管理者としてサインインして、デバイスを 1 台作成します。

エージェントがコンテナを作り直したあとも、デバイスは残っており、サインインセッションも維持されています。
新しいバージョンをリリースするには、新しいタグでイメージをビルドし、先にデプロイ先のディレクトリをバックアップしてから、既存の設定とデータはそのままにイメージを入れ替えます。新しいリリースを公開する を参照してください。
5. デプロイを記録する
デプロイではコードは変わりません。デプロイ方法と確認結果を README に記録するよう、エージェントに依頼します。
完了の条件URL を開くと管理者がサインインでき、コンテナを作り直す前に作成したデバイスが作り直したあとも残っていて、config.yml とデータベースがイメージやコードリポジトリではなく、サーバー上のデプロイ先のディレクトリにあること。