IBM Cloud Docs
CLI を使用したローカル・ソース・コードからのアプリのデプロイ

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 が必要です。

開始前に

ローカル・ソースを操作する前に、ソースがローカル・ワークステーション上のアクセス可能な場所にあることを確認してください。

この例では、https://github.com/IBM/CodeEngineサンプル、特にhelloworldサンプルを使用します。

  1. 以下のコマンドを使用して、https://github.com/IBM/CodeEngineサンプル・ソースをローカル・ワークステーションにダウンロードします。

    git clone https://github.com/IBM/CodeEngine
    
  2. CodeEngine\helloworldディレクトリーに変更します。

  3. 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 ローカル・ソースへのパス。
  4. **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 で表示できるのは、このビルド実行に関する情報のみです。 このビルド実行をコンソールで表示することはできません。

次のステップ

アプリがデプロイされると、アプリの作成方法や以前の更新方法に関係なく、以下の任意の方法でデプロイされたアプリの更新および参照されるコードの更新を行うことができます。

  • 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をチェックアウトします。