GCE: コンテナをデプロイする

Published on 2020-07-07 00:00:00

本記事では、GCEにコンテナをデプロイする方法を紹介します。

GCEでDockerイメージをホストするには以下を実施します。

  1. Dockerイメージをアップロードする

  2. VMインスタンスを作成する

  3. 公開する

Dockerイメージをアップロードする

Google Cloud Platform内でコンテナイメージを参照できるように、 Google Container RegistryにDockerイメージをアップロードします。

注釈

本節の説明は Container Registry のクイックスタート をかいつまんだ概要となっています。不明な点はリンク先を参照してください。

まず、Dockerfileからイメージを作成します。

$ docker build -t [imange_name]:[tag_name] .

次に、見分けがつくように専用のタグをつけます。

$ docker tag [imange_name]:[tag_name] us.gcr.io/[PROJECT-ID]/[image_name]:[tag_name]

※ us.gcr.ioはgoogle container registryのホスト名です。他にもasia.gcr.ioやeu.gcr.io等があります。

最後に、アップロードします。

$ docker push us.gcr.io/[PROJECT-ID]/[image_name]:[tag_name]

アップロードしたイメージはGoogle Cloud PlatformのPROJECT-IDに該当するプロジェクトのContainer Registryで確認することができます。

../../../_images/google_container_registry.png

image_name毎にディレクトリが作成されます。

VMインスタンスを作成する

コンテナイメージのアップロードができたので、次はそれを用いてVMインスタンスを作成します。 Google Compute Engineを開き、「インスタンスを作成」をクリックすると、

../../../_images/gce_create_vm_instance.png

以下のページが開きます。

../../../_images/gce_create_vm_instance_input1.png

各入力は以下のようにします。

  • 名前:識別のためのインスタンス名をつけます。

  • リージョン:データセンターの場所を選択します。allways freeで利用するためus-central1としています。

  • ゾーン:適当に選びます。

  • マシンの構成:allways freeで利用するためf1-microとしています。

../../../_images/gce_create_vm_instance_input2.png
  • コンテナ:「このVMインスタンスにコンテナイメージをデプロイします。」にチェック

  • コンテナイメージ:コンテナのタグを入力します。ex) us.gcr.io/[PROJECT-ID]/[image_name]:[tag_name]

  • コンテナの詳細オプション->環境変数:必要な環境変数を入力します。(PhoenixならSECRET_KEY_BASE等)

  • ブートディスク:コンテナをホストするOSですが、適切なイメージが選択されるので変更不要です。

../../../_images/gce_create_vm_instance_input3.png
  • ファイアウォール:Webサーバー(Phoenix等)をホストする場合はチェックを入れます。

入力が完了したら、作成をクリックします。

VMインスタンスにSSHする

作成したVMインスタンスにはSSHできます。

VMインスタンスの詳細を開き、SSHボタンをクリックします。

../../../_images/gce_ssh_vm_instance.png

少しまつと、接続が完了し、以下の画面が開きます。

../../../_images/gce_ssh_view.png

コンテナの状態は、docker container list でコンテナIDを調べ、 docker attach で確認することができます。

allways freeについて

Google CloudにはAlways Freeと呼ばれる無料枠 が存在します。

各サービスごとに無料となる条件及び上限枠が決まっていますので、確認して利用するとよいです。

公開する

インスタンス作成時には エフェメラル外部IPアドレス が与えられます。

このIPアドレスはインスタンスの再起動で解放/再取得されるため、公開するには 静的外部IPアドレス の予約が必要です。

VPCネットワーク->外部IPアドレスのページを開き、

../../../_images/gce_vpc_static_ip.png

種類をエフェメラルから静的に変更します。

後は、さくらのドメインやお名前ドットコム等のお使いのサービスでゾーン編集をし、 外部アドレスと名前を紐付ければ公開できます。

注釈

イメージ内でlet's encryptのcertbotを動作させたくない場合、Cloudflareを使う選択肢があります。

以上です。