0
1

More than 1 year has passed since last update.

Docker Hubに置いているDockerイメージを使用してElastic Beanstalkにデプロイする方法

Last updated at Posted at 2021-12-28

Elastic Beanstalk(以下EB)で、Docker HubのプライベートリポジトリにホストしているDockerイメージを使用してデプロイするための設定方法をざっくりまとめ

1. リポジトリを指定する

Dockerrun.aws.jsonにImageキーを追記する

Dockerrun.aws.json
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "organization/image-name",
    "Update": "true"
  }
}
  • NameキーにはDockerリポジトリを指定する
  • Updateキーにはイメージのキャッシュを上書きするかどうか指定します。デフォルトはtrue

🚫 注意点🚫
Dockerfileがソースバンドルに含まれている場合、Dockerrun.aws.jsonのImageを無視しDockerfileを使用してコンテナ構築が行われるため、Dockerfileは含めないようにしましょう

2. リポジトリの認証を設定する

インスタンスからプライベートリポジトリにアクセスできるように、docker loginを行う設定をします。主に2種類の設定方法がありますが、ここではそれぞれ概要をまとめる程度にします。詳しくは公式ドキュメントを参照ください

  1. AWS Systems Manager (SSM) パラメータストア
    SSMに認証情報を保存し、デプロイプロセスのビルド前フェーズでイベントを発生されるフックスクリプトを使用して、認証情報の取得・docker loginを行う方法

  2. Dockerrun.aws.jsonファイル
    docker login時に作成される認証ファイルをS3に置き、そのバケット情報をDockerrun.aws.jsonに記載する方法

ちなみに私のローカル環境下(MacBook Pro 13-inch 2018、Docker for Mac)では期待する認証ファイルが作成されなかったため、1番を参考にセットアップを行いました

3. その他Docker設定を記載する

  • Port (必須)
    Docker コンテナで公開するポートを指定します。基本的にはカスタムイメージを作成したときのEXPOSEと同じ値で問題ないと思われます。こちらを指定しないとコンテナが起動しません
Dockerrun.aws.json
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "organization/image-name",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "3000"
    }
  ]
}
  • Volumes, Logging, Entrypoint, Command (オプショナル)
    お好みに応じてDocker周りの設定を記載します。詳しい設定方法は公式ドキュメントを参照ください

4. デプロイに使用するソースバンドルの中身を調整

上記の🚫 注意点🚫でも書いているように、Dockerfileをソースバンドルに含めないように、.ebignoreで必要のないファイルを対象外にします

.ebignore
# 全ファイルを対象から外す
.

# EB設定ファイル
# ファイル名に!をつけて対象にする
!.ebextensions/*.config
!.platform/**/*.*

# Dockerビルド用ファイル
!Dockerrun.aws.json

参考

0
1
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
1