CLI を使用したローカル・ソース・コードからのアプリのデプロイ
IBM Cloud® Code Engine CLI を使用して、ローカル・ワークステーション上のソース・コードからアプリケーションを直接デプロイできます。 **app create
**コマンドを使用して、ローカル・ソースからイメージをビルドし、このビルドされたイメージを参照するようにアプリケーションをデプロイします。
ローカル・ディレクトリーからコードをプルするビルドを実行依頼すると、ソース・コードがアーカイブ・ファイルにパックされます。Code Engine は、イメージをアカウント内の IBM Cloud® Container Registry 名前空間に自動的にアップロードしてから、ビルドされたこのイメージを参照するアプリを作成してデプロイします。 ローカル・ビルドのIBM Cloud Container Registryのみをターゲットにすることができます。 ソース・イメージは、ビルド・イメージと同じ名前空間に作成されます。
このシナリオでは、アプリの名前とローカル・ソースへのパスのみを指定する必要があります。 オプションの全リストについては、ibmcloud ce app create
コマンドを参照してください。
イメージ・レジストリーにアクセスするために必要な許可については、イメージ・レジストリーの権限のセットアップを参照してください。
.gitignore
ファイルと同様に動作する .ceignore
ファイルを使用して、ソース・コード内の特定のファイル・パターンを無視することを選択できます。 例えば、node.js アプリケーションの.ceignore
ファイルのエントリーには、node_modules
および.npm
が含まれる場合があります。 無視するファイルパターンのサンプルについては、
GitHub.gitignore リポジトリを参照してください。
このシナリオでは、IBM Cloud® Container Registry が必要です。
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
ローカル・ソースを操作する前に、ソースがローカル・ワークステーション上のアクセス可能な場所にあることを確認してください。
この例では、https://github.com/IBM/CodeEngine
サンプル、特にhelloworld
サンプルを使用します。
-
以下のコマンドを使用して、
https://github.com/IBM/CodeEngine
サンプル・ソースをローカル・ワークステーションにダウンロードします。git clone https://github.com/IBM/CodeEngine
-
CodeEngine\helloworld
ディレクトリーに変更します。 -
CodeEngine\helloworld
ディレクトリーから、myapp-local
アプリを作成してデプロイします。このアプリは、ローカル・ワークステーション上のCodeEngine\helloworld
ソースからビルドされたイメージを使用します。 このコマンドにより、イメージが自動的にビルドされ、アカウント内の Container Registry 名前空間にプッシュされます。 既存の Container Registry 名前空間がない場合は、Code Engine によって自動的に作成されます。ibmcloud ce application create --name myapp-local --build-source .
.
は、ビルド・ソースが現行作業ディレクトリーにあることを示します。出力例
Creating application 'myapp-local'... Packaging files to upload from source path '.'... Submitting build run 'myapp-local-run-220414-171750199'... Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2117-rdaga'... Waiting for build run to complete... Build run status: 'Running' Build run completed successfully. Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-171750199' to check the build run status. Waiting for application 'myapp-local' to become ready. Configuration 'myapp-local' is waiting for a Revision to become ready. Ingress has not yet been reconciled. Waiting for load balancer to be ready. Run 'ibmcloud ce application get -n myapp-local' to check the application status. OK https://myapp-local.glxo4kabcde.us-south.codeengine.appdomain.cloud
コマンドの出力が
application create
コマンドの出力は、アプリが作成されデプロイされる前のビルド実行の進行に関する情報を提供する。この例では、ビルドされたイメージが Container Registry 内の
ce--abcde-glxo4kabcde
名前空間にアップロードされます。以下の表は、この例の
app create
コマンドで使用されるオプションの要約です。 コマンドとそのオプションについて詳しくは、ibmcloud ce app create
コマンドを参照してください。コマンドの説明 オプション 説明 --name
アプリケーションの名前。 プロジェクト内で固有の名前を使用します。 この値は必須です。
-名前は小文字で始まる必要があります。
-名前は小文字の英数字で終わる必要があります。
-名前は 63 文字以下でなければならず、文字、数字、およびハイフン (-) を含めることができます。--build-source
ローカル・ソースへのパス。 -
**
application get
**コマンドを使用して、ビルドに関する情報など、アプリに関する情報を表示します。ibmcloud ce application get --name myapp-local
出力例
[...] Name: myapp-local ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-04-14T16:10:11-04:00 URL: https://myapp-local.Sta.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp-local.glxo4kabcde.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp-local/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Image: private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Registry Secrets: ce-auto-icr-private-us-south Revisions: myapp-local-00001: Age: 23m Latest: true Traffic: 100% Image: private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj (pinned to 86944c) Running Instances: 0 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Build Information: Build Run Name: myapp-local-run-220414-161009244 Build Type: git Build Strategy: dockerfile-medium Timeout: 600 Source: https://github.com/IBM/CodeEngine Context Directory: helloworld Dockerfile: Dockerfile Build Run Summary: Succeeded Build Run Status: Succeeded Build Run Reason: All Steps have completed executing Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-161009244' for details. [...]
アプリがローカル・ソース・コードから作成およびデプロイされたので、ibmcloud ce app update
コマンドを使用して、ニーズに合わせてアプリを更新できます。 アプリケーションの更新について詳しくは、アプリの更新を参照してください。
アプリで使用するためにソースを更新する場合は、**application update
**コマンドで--build-source
オプションを指定する必要があります。
ローカル・ソースからイメージを作成し、単一のコマンドでアプリをデプロイする代わりに、アプリをデプロイする前に、最初にローカル・ソースからビルドすることを選択することができます。 ローカル・ワークステーションからソースをプルするビルド構成の作成 を参照してください。
アプリがローカル・ソースからデプロイされる場合、または CLI の リポジトリー・ソース・コード からデプロイされる場合、結果のビルド実行はビルド構成に基づきません。 完了したビルド実行は、最終的に自動的に削除されます。 ビルド構成に基づいていないビルド実行は、ビルド実行が成功した場合、1 時間後に削除されます。 ビルド実行が成功しなかった場合、このビルド実行は
24 時間後に削除されます。 CLI で表示できるのは、このビルド実行に関する情報のみです。 このビルド実行をコンソールで表示することはできません。
次のステップ
-
アプリがデプロイされた後、URL を使用してアプリへのアクセスを実行します。
-
カスタム・ドメイン・マッピング を作成して、それをアプリに割り当てることができます。 カスタム・ドメイン・ネームを使用して複数のリージョンにアプリをデプロイする方法について詳しくは、 高可用性アプリケーションの構成 を参照してください。
-
アプリがデプロイされたら、アプリをイベント・ドリブンにすることを検討しよう。 イベント・サブスクリプションを使用することで、 定期的なスケジュール によってアプリをトリガーしたり、 ファイル・アップロード や Kafka メッセージ などのイベントに対応するようにアプリを設定したりできます。
アプリがデプロイされると、アプリの作成方法や以前の更新方法に関係なく、以下の任意の方法でデプロイされたアプリの更新および参照されるコードの更新を行うことができます。
-
Open Container Initiative(OCI)標準に従ってコンテナ・イメージを持っている場合は、アプリをデプロイするときに、コンテナ・レジストリの場所を指すイメージへの参照だけを提供する必要がある。 パブリック・レジストリー または プライベート・レジストリー 内のイメージを使用してアプリをデプロイできます。
app create
コマンドを使用してアプリを作成し、--build-source
オプションを指定してローカルまたはリポジトリー・ソースからコンテナー・イメージをビルドし、別のコンテナー・イメージを指すようにアプリを変更する場合は、まずアプリからビルドの関連付けを削除する必要があります。 例えば、ibmcloud ce application update -n APP_NAME --build-clear
を実行します。 アプリからビルドの関連付けを削除した後、別のイメージを参照するようにアプリを更新できます。 -
Git リポジトリーにあるソース・コードから開始する場合は、ソースからイメージをビルドし、単一操作でアプリをデプロイする処理を Code Engine に任せることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、リポジトリー・ソース・コードからのアプリのデプロイを参照してください。 イメージのビルドをより詳細に制御したい場合は、アプリをデプロイする前に Code Engine を使用してイメージのビルドを選択できます。
-
ローカル・ワークステーションにあるソース・コードから開始する場合は、ソースからのイメージのビルドと単一 CLI コマンドを使用したアプリのデプロイを Code Engine に処理させることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのアプリのデプロイを参照してください。 イメージのビルドをより詳細に制御したい場合は、アプリをデプロイする前に Code Engine を使用してイメージのビルドを選択できます。
例えば、アプリのソースの開発を進化させながら、ローカル・ソースのビルドを Code Engine に処理させることができます。 その後、イメージが成熟すると、必要な特定のイメージを参照するようにデプロイ済みアプリを更新できます。 必要に応じて、このプロセスを繰り返すことができます。
更新したアプリをデプロイすると、イメージにタグが指定されていない限り、参照されているコンテナー・イメージの最新バージョンがダウンロードされてデプロイされます。 イメージにタグが指定されている場合、タグ付けされたイメージがデプロイメントに使用されます。
コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。