質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

Q&A

0回答

562閲覧

Rails on DockerアプリをCircleCIからECSにデプロイしたい。 AWS(ECS)に詳しい方お願いします。

jinugasachio

総合スコア12

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

0グッド

1クリップ

投稿2019/07/31 12:30

前提・実現したいこと

CircleCIのorbsを使いデプロイ後、更新されたECSのタスクがヘルスチェックによりunhealthyになってしまうのを解決したいです。

発生している問題・エラーメッセージ

circleciの挙動は、

  1. ECRにdockerイメージをプッシュ
  2. 新しいタスクリビジョンを定義、サービスを更新(デプロイ)  です。

その後ALBのヘルスチェックが失敗して、コンテナが止まります。
ターゲットグループ のコンソールにてunhealthyとなっているのが確認できる。

![
ヘルスチェックエラー文
Health checks failed with these codes: [500]

該当のソースコード

CircleCI

1version: 2.1 2orbs: 3 aws-ecr: circleci/aws-ecr@6.2.0 4 aws-ecs: circleci/aws-ecs@0.0.8 5 6workflows: 7 version: 2 8 build_deploy: 9 jobs: 10 11 - aws-ecr/build-and-push-image: 12 13 aws-access-key-id: ACCESS_KEY_ID 14 aws-secret-access-key: SECRET_ACCESS_KEY 15 account-url: AWS_ECR_ACCOUNT_URL 16 repo: "${AWS_RESOURCE_NAME_PREFIX}" 17 region: AWS_REGION 18 tag: latest 19 20 21 - aws-ecs/deploy-service-update: 22 requires: 23 - aws-ecr/build-and-push-image 24 verify-revision-is-deployed: true 25 aws-region: ${AWS_DEFAULT_REGION} 26 family: "${AWS_RESOURCE_NAME_PREFIX}-task" 27 cluster-name: "${AWS_RESOURCE_NAME_PREFIX}-cluster" 28 service-name: "${AWS_RESOURCE_NAME_PREFIX}-service1" 29 container-image-name-updates: "container=${AWS_RESOURCE_NAME_PREFIX},tag=latest" 30 31

Dockerfile

1FROM ruby:2.5.5-stretch 2ENV LANG C.UTF-8 3 4 5RUN apt-get update -qq && apt-get install -y \ 6 build-essential \ 7 nodejs \ 8 vim \ 9 mysql-client \ 10 && rm -rf /var/lib/apt/lists/*\ 11 && gem install bundler 12 13 14WORKDIR /tmp 15ADD Gemfile Gemfile 16ADD Gemfile.lock Gemfile.lock 17RUN bundle install 18 19ENV APP_HOME /myapp 20RUN mkdir -p $APP_HOME 21WORKDIR $APP_HOME 22ADD . $APP_HOME 23 24ENV RAILS_ENV production 25ARG RAILS_MASTER_KEY 26ENV RAILS_MASTER_KEY $RAILS_MASTER_KEY 27 28 29EXPOSE 3000 30 31RUN rm -f tmp/pids/server.pid 32 33CMD ["bundle", "exec", "rails", "s", "puma", "-b", "0.0.0.0", "-p", "3000", "-e", "production"]

試したこと

上記のcircleciの挙動後、ローカルのターミナルから同じDockerイメージをビルドしプッシュすると、ヘルスチェックがhealthになり、更新内容が無事に反映される。

つまり生成されるイメージに問題があると考え、circleciでビルドされたイメージ、ローカルでビルドされたイメージを調べてみるとDockerのバージョンが異なっていたことが発覚。しかしバージョンを揃えるも変わらず。

補足情報(FW/ツールのバージョンなど)

以下AWSの詳細設定。

コンテナ(タスク)定義
・イメージ      latest
・ハードメモリ制限  128MiB
・CPUユニット数  10
・ホストポート    0
・コンテナポート   3000

セキュリティグループ
・インバウンド  全て許可
・アウトバウンド 全て許可

ALB設定
イメージ説明

そのほか必要な情報がありましたら、お申しつけください。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問