アプリのデプロイ
専用コンテナへの Node.js、Python、Go の常駐アプリのデプロイと、PHP-FPM、PHP バージョン、拡張機能、php.ini の管理について説明します。
このガイドでは、専用コンテナに Node.js、Python、Go の常駐アプリをデプロイする方法、PHP-FPM の管理方法、PHP バージョンの切り替え、拡張機能のインストール、php.ini の編集方法を説明します。
ランタイム
すべてのコンテナには、次のランタイムが含まれています。デフォルトの PATH から利用できます(node、npm、python3、go、java、ruby、php など)。
| ランタイム | バージョン |
|---|---|
| PHP | 8.1 と 8.2。コンソールから切り替え可能 |
| Node.js、Python、Go、Java、Ruby | イメージごとに各1バージョン |
正確なバージョンは、コンテナの 設定管理 タブを開き、ランタイム環境 カードで確認してください。
アプリのデプロイ
コンテナページの アプリ管理 タブには、PHP-FPM、Node.js、Python、Golang の4つのランタイムカードがあります。アプリがまだデプロイされていない場合、Node.js、Python、Golang のカードに アプリをデプロイ ボタンが表示されます。
ステップ1: コードをアップロードする
コードは、コンテナ内の /var/www/html またはそのサブディレクトリに配置する必要があります。ファイル管理 タブのルート / は、コンテナの /var/www/html に相当します。アーカイブをアップロードしてその場で展開するか、リモートダウンロード で URL から取得できます。ファイルとスケジュールタスクを参照してください。
アプリに依存関係が必要な場合(npm install や pip install など)は、ローカルでビルドし、依存関係を含めたディレクトリをアップロードしてください。
ステップ2: 起動設定を入力する
コンテナページを開き、アプリ管理 タブに切り替えます。
必要なランタイムのカードで、アプリをデプロイ をクリックします。
ダイアログに入力します。
項目 説明 起動コマンド アプリを起動する完全なコマンド。例: node app.js、npm start、python app.py、gunicorn app:app -b 0.0.0.0:$PORT、./app作業ディレクトリ コマンドを実行するディレクトリ。デフォルトは /var/www/htmlですリッスンポート コンテナ内でアプリが待ち受けるポート。デフォルトは 3000、範囲は1~65535ですデプロイして起動 をクリックします。「アプリをデプロイして起動しました」 と表示されると、カードの状態が 実行中 に変わります。
入力したポートは、環境変数 PORT としてプロセスに渡されます。ポートをハードコードせず、コード内で PORT(Node.js では process.env.PORT など)を読み取ってください。
起動コマンドの実行方法
- コマンドは
/bin/sh -cを通じて実行されるため、引数の指定、環境変数($PORTなど)の展開、簡単なシェル構文の使用が可能です。 - アプリはコンテナの
wwwユーザーとして実行されます。このユーザーがコードファイルを読み取れ、アプリが書き込む各ディレクトリに書き込み権限を持つことを確認してください。 - コンテナ内のプロセスマネージャーがアプリを監視します。コンテナの起動時にアプリを起動し、予期せず終了した場合は自動で再起動します。
- Go の場合は、ローカルで Linux バイナリをコンパイルしてアップロードし、
./appなどのコマンドを使用します。
ランタイムごとに1つのアプリ
各ランタイムカードは、1つのアプリプロセスを管理します。たとえば、Node.js カードでは Node.js アプリを1つ実行できます。アプリをデプロイすると、カードの アプリをデプロイ ボタンが、起動、停止、再起動、ログ に変わります。
稼働中のアプリの管理
アプリ管理 タブで、次の操作ができます。
- 起動 / 停止 / 再起動 でアプリプロセスを制御します。
- ログ で、アプリの標準出力と標準エラー出力の直近200行を表示します。ダイアログの 更新 をクリックすると、再読み込みできます。
- ステータスを更新 で、すべてのランタイムカードを再読み込みします。各カードには、取得できる場合にバージョン、PID、稼働時間が表示されます。
ランタイムにアプリがまだデプロイされていない場合、カードには 停止済み と アプリをデプロイ ボタンが表示されます。この状態で起動をクリックすると、先にアプリをデプロイするよう案内されます。
PHP-FPM
PHP-FPM はすべてのコンテナでデフォルトで稼働するため、デプロイは不要です。PHP-FPM カードで、停止、起動、再起動、ログの確認ができます。
PHP バージョンの切り替え
- PHP バージョンを切り替え をクリックします。このボタンは、概要 タブの クイック操作 と、設定管理 タブの PHP 設定 カードにあります。
- PHP 8.1 または PHP 8.2 を選択し、切り替える をクリックします。
切り替え後、PHP-FPM は自動で再起動し、デフォルトの PHP を使用するすべてのコードに影響します。切り替える前に、対象バージョンでコードが動作することを確認してください。
拡張機能と php.ini
PHP 設定 タブを開きます。
- PHP 拡張機能: 読み込み済みの拡張機能は緑色のタグで表示されます。タグをクリックすると、その拡張機能を無効にできますが、コア拡張機能の無効化には注意してください。インストールするには、名前(
redis、imap、soap、gmpなど)を入力して インストール をクリックします。拡張機能は Alpine の公式パッケージからインストールされます。 - php.ini: 使用中の PHP バージョンの php.ini 全体を、ブラウザーで編集できます。保存すると、PHP-FPM が自動でホットリスタートします。
拡張機能と php.ini は、使用中の PHP バージョンにのみ適用されます。バージョンを切り替えた後は、更新 をクリックして、そのバージョンの設定を読み込んでください。
監視とコンテナ操作
- 概要 タブには、CPU 使用率、メモリ使用量、ディスク使用量、ネットワーク転送量に加え、コンテナの CPU、メモリ、ディスクの上限が表示されます。
- 上部のボタンで、コンテナを 起動、停止、再起動 できます。コンテナの停止中は、その中のすべてのアプリが利用できません。
- 専用コンテナ一覧からコンテナを 削除 できます。コンテナを削除すると、すべてのデータが完全に消去され、復元できません。
API によるデプロイ
コンソールが使用するエンドポイントは、直接呼び出すこともできます。Authorization: Bearer <token> ヘッダーでログイントークンを送信してください。container_id は、コンテナ一覧が返す id です。
# List containers
curl -H "Authorization: Bearer $TOKEN" \
https://api.yeap.cloud/api/user/host/containers
# Deploy a Node.js app
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
https://api.yeap.cloud/api/user/host/apps/create \
-d '{"container_id": 123, "type": "nodejs", "config": "node app.js", "working_dir": "/var/www/html", "port": 3000}'
# App status and recent logs
curl -H "Authorization: Bearer $TOKEN" \
"https://api.yeap.cloud/api/user/host/apps/status?container_id=123&type=nodejs"
curl -H "Authorization: Bearer $TOKEN" \
"https://api.yeap.cloud/api/user/host/apps/logs?container_id=123&type=nodejs&lines=200"type には nodejs、python、golang を指定できます。起動、停止、再起動には、本文 {"container_id": 123, "type": "nodejs"} を指定して、POST /api/user/host/apps/start、/stop、/restart を呼び出します。