Oracle Container Cloud Serviceでのアプリケーションのデプロイ


オプション



始める前に

目的

このチュートリアルでは、GitHubに現在格納されているアプリケーションのソース・ファイルを取得して、Oracle Container Cloud Serviceを使用してアプリケーションをDockerコンテナとして作成およびデプロイすることで、既存の開発プロセスを拡張する方法を示します。

所要時間

30分

背景

このチュートリアルでは、次を説明します。

  • GitHubでアプリケーション・ソース・ファイルが更新されるたびに、Docker Hubが自動的に新しいDockerイメージを作成するように設定します
  • Oracle Container Cloud Serviceを使用して、新しいサービスをDockerイメージに基づいてDockerコンテナとして手動でデプロイします

シナリオ

このチュートリアルでは、次を実行します。

  1. Docker HubアカウントをGitHubアカウントとリンクすることで準備します(まだリンクされていない場合)。
  2. GitHubのOracle Container Cloud Serviceアカウントからユーザー自身のGitHubアカウントの新しいリポジトリにdocker-hello-worldアプリケーションをフォークします。
  3. ソース・ファイルが変更されるたびに、自動的にdocker-hello-worldアプリケーションから新しいDockerイメージをDocker Hubが作成するように設定します。
  4. Docker Hubで自動ビルドを手動でトリガーすることで、GitHubのdocker-hello-worldソース・ファイルから新しいDockerイメージを作成します。
  5. 新しいDockerイメージに基づいて、Oracle Container Cloud Serviceでサービスを作成します。
  6. Dockerコンテナとしてサービスをデプロイします。
  7. docker-hello-worldアプリケーションが実行中のDockerコンテナ内で実行されていることを確認します。

必要なもの

必要なリソース/ツール: 詳細:
Webブラウザ Oracle Cloudサービスで作業するには、Webブラウザが必要です。最小要件を次に示します。
  • Microsoft Internet Explorer 11以降。
  • Google Chrome 29以降
  • Mozilla Firefox 24以降
  • Apple Safari 9以降
Oracle Container Cloud Serviceへのサブスクリプション Oracle Container Cloud Serviceを使用する前に:
  • ユーザー自身または組織内の別の人が、Oracle Container Cloud Serviceサブスクリプションをオーダーしてアクティブ化しておく必要があります
  • ユーザー自身または組織内の別の人がOracle Container Cloud Serviceサービス・コンソールを使用してOracle Container Cloud Serviceサービス・インスタンスを作成しておく必要があります
  • Oracle Container Cloud Serviceコンテナ・コンソールにログインするためのURLおよび資格証明を知っている必要があります

詳細は、Oracle Help CenterのOracle Container Cloud Serviceの使用に関する項を参照してください。

GitHubアカウント GitHubアカウントをまだ持っていない場合には、https://github.com/に移動してサインアップし、アカウントを取得します。
Docker Hubアカウント Docker Hubアカウントをまだ持っていない場合には、https://hub.docker.com/に移動してサインアップし、アカウントを取得します。

Docker HubアカウントはGitHubアカウントにリンクされている必要があります。まだ2つのアカウントがリンクされていない場合(またはリンクされているかわからない場合)、「チュートリアルの準備」の手順に従ってリンクします。


1. チュートリアルの準備

このチュートリアルの手順を実行するには、Docker HubアカウントがGitHubアカウントにすでにリンクされている必要があります。まだ2つのアカウントがリンクされていない場合(またはリンクされているかわからない場合)、次の手順に従ってください。2つのアカウントがすでにリンクされている場合には、次の項にスキップしてください。

Docker HubアカウントをGitHubアカウントにリンク

  1. https://hub.docker.com/loginでDocker Hubアカウントにログインします。
  2. メニュー・バーでユーザー名をクリックして「Settings」を選択し、「Account Settings」ページを表示します。
  3. 「Linked Accounts & Services」タブが表示されます。
  4. ヒント: Docker HubアカウントがすでにGitHubアカウントにリンクされている場合には、「Unlink GitHub」ボタンが表示されます。その場合、次の項にスキップしてください。Docker HubアカウントがまだGitHubアカウントにリンクされていない場合には、「Link GitHub」が表示されます。

  5. 「Link Github」をクリックして、Docker HubアカウントをGitHubアカウントにリンクします。

2. GitHubでdocker-hello-worldアプリケーションをフォーク

このチュートリアルでは、docker-hello-worldアプリケーションを作成およびデプロイします。アプリケーションのソース・ファイルはすでにdocker-imagesと呼ばれるGitHubリポジトリに入っています。docker-imagesリポジトリを自分のGitHubアカウントにフォークしてコピーするだけですみます。

  1. https://github.com/loginでGitHubアカウントにログインします。
  2. https://github.com/oracle/docker-images/tree/master/ContainerCloud/images/docker-hello-worldに移動します。

  3. 「repository」ページの上部にあるメニューで「Fork」ボタンをクリックします。

docker-imagesリポジトリの自身のコピーが作成されました。

3. Docker Hub自動ビルドの作成

  1. https://hub.docker.com/loginでDocker Hubアカウントにログインします。
  2. Docker Hubの「Create」メニューから「Create Automated Build」を選択します。
  3. Docker Hubの「 Repositories」タブ 
    このイメージの説明
  4. 「Create Auto-build GitHub」をクリックして、GitHubアカウントに自動ビルドを作成するリポジトリが含まれていることを表示します。
  5. Docker Hubの自動ビルドのページ 
    このイメージの説明

  6. 自分のGitHubアカウントに対してフォークしたdocker-imagesリポジトリを選択します。
  7. Docker Hubの自動ビルドのページ 
    このイメージの説明

  8. 「Create Automated build」ページで次を実行します。
    1. 次の値を入力します。
      • Name: docker-hello-world
      • Short Description: Simple Hello World Example
    2. 「Create」をクリックします。
    3. Docker Hubの「Create Automated Build」ページ 
      このイメージの説明

    自動ビルドが作成されると、「Automated Build」画面の「Repo Info」タブが表示されます。 

    Docker Hubの「Automated Build」ページ、「Repo Info」タブ 
    このイメージの説明
  9. 「Build Settings」タブにナビゲートします。
    Docker Hubの「Automated Build」ページ、「Build Settings」タブ 
    このイメージの説明
  10. 「Build Settings」タブに定義する作成ルールは、イメージがいつどのように作成されるかを示します。デフォルトでは、イメージは次のようになります。

    • 更新がGitHubにプッシュされるたびに自動的に作成される
    • マスターGitHubブランチを使用して作成される
    • リポジトリのルート・ディレクトリでDockerfileのマスター・ビルド・ルールを使用して作成される
    • Docker Hubでタグlatestが指定される
  11. 「Dockerfile Location」フィールドの値を/ContainerCloud/images/docker-hello-world/に変更します

    このチュートリアルでは、他のデフォルト設定はそのままでかまいません。ただし、docker-hello-worldアプリケーションからGitHubに対して更新をプッシュしないため、次の項に示すように手動でビルドをトリガーすることになります。

  12. 「Save Changes」をクリックします。

4. ビルドを手動でトリガー

Docker Hubで自動ビルドの設定が完了したため、docker-hello-worldアプリケーションに対する変更がGitHubのdocker-imagesリポジトリにプッシュされるたびに新しいDockerイメージが作成されます。ただし、このチュートリアルでは、GitHubでdocker-hello-worldソース・ファイルを変更しません。Dockerイメージを作成するには、かわりに手動でビルドをトリガーします。

  1. 「Build Settings」タブで、マスター・ブランチの隣にある「Trigger」をクリックしてデフォルトのビルド設定でイメージを作成します。
  2. Docker Hubの「Automated Build」ページ、「Build Settings」タブ 
    このイメージの説明
  3. Docker Hubリポジトリの「Build Details」ページにナビゲートします。
  4. トリガーしたばかりのビルドが「Build Details」ページに表示されます。指定したビルド設定のため、イメージはマスターGitHubブランチを使用して作成され、Docker Hubでタグlatestが指定されます。

    イメージが正常に作成されると、「Build Details」ページにタグがlatestで表示されます。

    ヒント: イメージ・ステータスが「Success」に変更されたことを確認するには、ブラウザをリフレッシュする必要がある可能性があります。

    Docker Hubの「Automated Build」ページ、「Build Details」タブ 
    このイメージの説明
  5. 「Repo Info」タブにナビゲートします。
    Docker Hubの「Automated Build」ページ、「Repo Info」タブ 
    このイメージの説明

    GitHubリポジトリからのREADME.mdファイルがDockerリポジトリの「Full Description」フィールドに表示されていることがわかります。

  6. 「Dockerfile」タブにナビゲートします。
    Docker Hubの「Automated Build」ページ、「Dockerfile」タブ 
    このイメージの説明

    GitHubリポジトリからのDockerfileファイルがDockerリポジトリに含まれたことがわかります。

5. Oracle Container Cloud Serviceを使用して新しいサービスを作成

  1. 管理者から受け取った資格証明を使用して、URLからOracle Container Cloud Serviceコンテナ・コンソールにログインします。
  2. 「Services」ページで、「New Service」をクリックして「Service Editor」を表示し、

    1. 次の値を入力します。
      • Service Name: Hello World Demo
      • Image: YourAccount/docker-hello-world:latest (Docker Hubアカウントからのイメージ)
      • Ports: TCPプロトコルを使用してホスト・ポート8080からコンテナ・ポート80へのマッピングを設定します(ポート8080は後でデプロイされたアプリケーションが実行されているかを確認するのに使用します)
    2. 「Save」をクリックして新しいサービスを作成し、「Service Editor」を閉じます。
  3. 「Services」ページ、「Service Editor」が重なっている 
    このイメージの説明

Hello World Demoサービスをデプロイする準備ができました。

6. Oracle Container Cloud Serviceを使用して新しいサービスをデプロイ

  1. コンテナ・コンソールの「Services」ページで、作成したばかりのHello World Demoサービスの隣にある「Deploy」ボタンをクリックします。
  2. 「Services」ページ・セクション 
    このイメージの説明

    「Deploy」ダイアログが表示され、次に示す項目のデフォルト値が表示されます。

    • デプロイメントの名前
    • デプロイメントを実行するホストのプール
    • デプロイするコンテナの数およびデプロイ先となるホストの選択方法
    • 「Deploy」ウィンドウ 
      このイメージの説明
  3. 「Deploy」ダイアログで、「Deploy」をクリックして、デフォルト値を受け入れ、サービスをデプロイして開始します。
  4. 「Deployments」ページが表示され、作成したばかりのデプロイメントの進捗詳細が表示されます。

    まず、docker-hello-worldイメージがDocker Hubから取得されます。イメージがダウンロードされると、コンテナとして起動されます。「Deployments」ページにコンテナのステータスが「Running」と表示され、コンテナが実行されているホストの名前が表示されます。

    「Deployments」ページ 
    このイメージの説明
  5. 「Hostname」列のホストの名前をクリックして、コンテナを実行しいるホストの詳細を表示します。
  6. 「Deployments」ページ 
    このイメージの説明

    「Host」ページが表示され、コンテナを実行しているホストの詳細が表示されます。

  7. 「Host」ページで、「public_ip」フィールドの値をコピーします。
  8. 「Hosts Details」ページ 
    このイメージの説明

7. デプロイメントの検証

  1. 新しいブラウザ・ウィンドウを開きます。
  2. URLを形式http://<public_ip>:8080で入力し、Hello World Demoコンテナ内で実行されているdocker-hello-worldアプリケーションにアクセスします。ここで、
    •  <public_ip>は、「Host」ページの「public_ip」フィールドからコピーされた値です(例: 192.0.2.254)
    • 8080は前にコンテナ・ポート80にマッピングしたホスト・ポートです

    たとえば、完全なURLはhttp://192.0.2.254:8080のようになります

    ブラウザがページをロードすると、ページには次のようなメッセージが表示されます。

    Hello world from 0.Hello-World-Demo.Hello-World-Demo-20160829-120946!

    「Browser」ウィンドウ 
    このイメージの説明

おめでとうございます。Docker Hubからdocker-hello-worldアプリケーションが作成され、Oracle Container Cloud Serviceを使用して実行中のDockerコンテナ内にデプロイされました。

詳細