メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

Elastic Beanstalk Docker ベースの Go プラットフォームの使用

以下の手順では、Go 向けに事前設定された Docker コンテナを使用して Go アプリケーションを Elastic Beanstalk にデプロイするプロセスについて、順を追って説明します。

ローカルの開発環境のセットアップ

このチュートリアルでは、Go の「Hello World」アプリケーションを使用します。

開発環境をセットアップするには

  1. サンプルアプリケーション用の新しいフォルダーを作成します。

    ~$ mkdir eb-go-sample
    ~$ cd eb-go-sample
  2. アプリケーションのルートフォルダーに、server.go という名前のファイルを作成します。ファイルには、次のように入力してください。

    例 ~/eb-go-sample/server.go

    package main
    
    import "github.com/go-martini/martini"
    
    func main() {
        m := martini.Classic()
        m.Get("/", func() string {
            return "Hello world!"
        })
        m.Run()
    }

    注記

    • アプリケーションソースバンドルに、main という名前のパッケージを含める必要があります。このパッケージの中に、実行するコンテナの main 関数を含めてください。

    • インポートする必要がある依存関係(たとえば、Martini パッケージであれば go-martini)はデプロイ中にコンテナにダウンロードされ、インストールされます。そのため、Elastic Beanstalk にアップロードしたアプリケーションソースバンドルに依存関係を含める必要はありません。

    • Elastic Beanstalk によって、コンテナの GOPATH 環境変数が /go に設定されます。

Docker を使用してローカルで開発しテストする

セットアップした環境を使用して、Go アプリケーションを作成してテストできます。

サンプルの Go アプリケーションを開発するには

  1. Dockerfile をアプリケーションのルートフォルダーに追加します。ファイルには、事前設定されたローカルの Docker コンテナを実行するために使用する Elastic Beanstalk Docker ベースイメージを指定します。Elastic Beanstalk では、このイメージを使用して、Dockerfile に関する後続の手順を実行します。

    注記

    ご使用中のプラットフォームバージョンの Docker イメージ名を使用した命令のみを含めてください。事前設定済みの Docker イメージの名前については、「Elastic Beanstalk でサポートされているプラットフォーム」を参照してください。Dockerfile の使用方法の詳細については、「単一コンテナの Docker の設定」を参照してください。事前設定された Docker プラットフォーム向けの Dockerfile の例については、「例: Dockerfile を使用して、事前設定された Docker プラットフォームをカスタマイズおよび設定する」を参照してください。

    次の例を使用できます。

    例 ~/eb-go-sample/Dockerfile

    # For Go 1.3
    FROM golang:1.3.3-onbuild
    
    # For Go 1.4
    FROM golang:1.4.1-onbuild
  2. Docker イメージを作成します。

    ~/eb-go-sample$ docker build -t my-app-image .
  3. イメージから Docker コンテナを実行します。

    注記

    コンテナのポート 3000 をローカルホストのポート 8080 にマッピングする -p フラグを指定する必要があります。Go アプリケーション向けに事前設定された Elastic Beanstalk の Docker コンテナでは、常にコンテナのポート 3000 でアプリケーションが公開されます。-it フラグは、イメージをインタラクティブプロセスとして実行します。-rm フラグは、コンテナが存在する場合にコンテナファイルシステムをクリーンアップします。オプションで、イメージをデーモンとして実行するための -d フラグも指定できます。

    ~/eb-go-sample$ docker run -it --rm -p 8080:3000 my-app-image
  4. サンプルアプリケーションを表示するには、次の URL をウェブブラウザに入力します。

    http://localhost:8080

Elastic Beanstalk へのデプロイ

アプリケーションをテストすると、Elastic Beanstalk にデプロイする準備が完了します。

アプリケーションを Elastic Beanstalk にデプロイするには

  1. アプリケーションのルートフォルダで、DockerfileDockerfile.local に名前変更します。このステップは、Elastic Beanstalk に対する正しい指示を含んだ Dockerfile を Elastic Beanstalk で使用し、カスタマイズされた Docker イメージを Elastic Beanstalk 環境の各 Amazon EC2 インスタンスに作成するために必要なステップです。

    注記

    ベースの Go Docker イメージを変更する命令が Dockerfile に含まれている場合、このステップを行う必要はありません。Dockerfile に、コンテナの構築に使用するベースイメージを指定する Dockerfile 行のみが含まれている場合、FROM を使用する必要はありません。この場合、その Dockerfile は重複しています。

  2. アプリケーションソースバンドルを作成します。詳細については、「アプリケーションソースバンドルを作成する」を参照してください。

  3. アプリケーションをデプロイするための Elastic Beanstalk 環境を作成します。手順については、「AWS Elastic Beanstalk アプリケーションの管理および設定」を参照してください。該当するステップで、[Environment Type] ページの [Predefined configuration] リストにある、[Preconfigured - Docker] の下の [Go] を選択します。