サービス
サービスは、SnapVM がマシン上で管理すべきプロセスを記述する仕組みです。ブラウザ切断後やマシン復帰後も期待通りに起動してほしいものに使います。
サービスを定義する場面
Section titled “サービスを定義する場面”一時的なコマンドではなく、ワークスペースの一部として扱いたいプロセスはサービスにします。
よくある例:
- ポート
8080の Web サーバー - ローカルデータベースまたはキュー
- バックグラウンドワーカー
- ファイルウォッチャー
- AI エージェントプロセス
- 言語サーバーやプロジェクト固有のデーモン
サービスの形
Section titled “サービスの形”一般的なサービス定義には次の情報があります。
| フィールド | 目的 |
|---|---|
| 名前 | コンソールで表示される安定した識別子 |
| コマンド | 実行するプログラム |
| 引数 | コマンドに渡すパラメータ |
| 作業ディレクトリ | プロセスの開始ディレクトリ |
| 環境変数 | プロセスに必要な変数 |
| HTTP ポート | ゲートウェイで公開するポート |
| 依存関係 | 先に起動すべき他のサービス |
ライフサイクル
Section titled “ライフサイクル”サービスは作成、更新、開始、停止、再起動、削除できます。デプロイによっては PID、稼働時間、終了ステータス、再起動回数などの状態を確認できます。
マシンがハイバネーションすると、プロセスはランタイムとともに停止します。マシンが復帰すると、サービス定義により期待するプロセスを予測可能な形で再起動できます。
実用的な指針
Section titled “実用的な指針”- シェル履歴や対話的プロンプトに依存しない明示的なコマンドにします。
- 長い一回限りのコマンドより、
npm run devやbin/serverのようなプロジェクト内スクリプトを優先します。 - シークレットはドキュメントやコミット済みサービス定義に書かず、デプロイが提供する秘密情報管理を使います。
- ヘルスチェックやログで正常起動を確認します。
- ゲートウェイとチームメンバーが扱いやすいよう、ポートは安定させます。