0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud Code Engine と Docker Hub でお手軽にアプリデプロイ

Last updated at Posted at 2024-06-18

はじめに

IBM Cloud Code Engine(以下 Code Engine) は、IBM Cloud が提供するフルマネージドのサーバーレスプラットフォームである。このプラットフォームは、コンテナ、コード、バッチジョブを実行するために設計されており、インフラストラクチャの管理やスケーリングを自動化する。ユーザーは、コードを直接アップロードまたは、Docker コンテナをデプロイにより、アプリケーションやジョブを実行できる。

類似のサービスとして、他のクラウドベンダーでは AWS Fargate や GCP Cloud Run などが挙げられる。

今回は、この Code Engine と、Docker Hub を利用して、アプリをデプロイする方法についてサクッと紹介したい。

なぜ Docker Hub も使うの?

Code Engine は他所から持ってきた 'アプリの素' からコンテナのインスタンスを作成し実行するようになっている。
アプリの素は、「ソースコード」もしくは「コンテナイメージ」だ。
今回はコンテナイメージを Code Engine に pull してきてアプリコンテナを作成 → 実行するべく、イメージの元の保存先として Docker Hub を選んだというわけだ。

前提

  • 作業環境: MacBook Pro Apple M1 Max/Sonoma 14
  • docker コマンド: Docker version 25.0.4-rd, build c4cd0a9
    • Rancher Desktop(Rancher Desktop by SUSE Version 1.13.1 (1.13.1)) でインストール
  • アプリをコンテナ化するための Dockerfile 等はすでに用意されているものとする
  • Code Engine のプロジェクト作成などの手順は割愛
  • その他手順的なのも抜けている可能性あり

やったこと

1. ローカルおよび Docker Hub での作業

プッシュするイメージを作成する。

# '--platform ..' のオプションは、M1 Mac でコンテナイメージ作成する場合に必要とのこと
docker build -t <image_name> . --platform linux/amd64

その後 Docker Hub にログインし

docker login -u <username> -p <password>

ローカルで作成したイメージを push するイメージと紐付ける。

docker tag ローカルイメージ名:タグ名 DockerHubのアカウント名/リモートリポジトリ名:タグ名

最後に、紐づけたイメージを Docker Hub に push する。

docker push アカウント名/リモートリポジトリ名:タグ名

2. Code Engine

Code Engine > プロジェクト > アプリケーションの作成

ここで、各項目は以下のように入力し、すべて終わったら 完了 をクリックする。

  • レジストリー・サーバー: https://index.docker.io/v1/

  • レジストリー・シークレット: 後述

  • 名前空間: この作業で指定した Docker Hub のアカウント名
    Docker Hub(https://hub.docker.com/) にログインし、Repositories タブ画面で namespace/リポジトリー(イメージ名) となっているのが確認できる。(※画像でグレーアウトしている箇所)

  • リポジトリー(イメージ名):この作業で指定した リモートリポジトリ名

  • タグ: Docker Hub に push したイメージに付与したタグ

レジストリー・シークレットに関して

上の画像で、「レジストリー・シークレット」はプルダウンメニューになっており、展開して レジストリー・シークレットの作成を選択する。

以下の設定を施す:

  • ターゲット・レジストリー: Dockerhub
  • ユーザー名: Docker Hub のユーザー名(ログイン名/docker login で使用するやつ)
  • アクセス・トークン: ない場合新規に作成する必要あり

全て設定を終えたら、作成 をクリックする。

ポートの設定

アプリがどのポートでリッスンしているかを設定する。
デフォルトでは 8080 となっているが、アプリがたとえば 3000 でリッスンしている場合は、それを入力する。

image.png

終わりに

以上のセッティングを問題なく完了すると、アプリがデプロイされて URL が発行され、無事にアクセスできるようになる。(Public エンドポイントの場合)
CI/CD などを考慮するともう少し複雑になるが、「とにかくアプリをインターネット上で動かす!話はそれからだ」な状態において、サーバーレスは有効な手段の一つとなり得るのだろうと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?