前提・実現したいこと
CircleCIのorbsを使いデプロイ後、更新されたECSのタスクがヘルスチェックによりunhealthyになってしまうのを解決したいです。
発生している問題・エラーメッセージ
circleciの挙動は、
- ECRにdockerイメージをプッシュ
- 新しいタスクリビジョンを定義、サービスを更新(デプロイ) です。
その後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
セキュリティグループ
・インバウンド 全て許可
・アウトバウンド 全て許可
そのほか必要な情報がありましたら、お申しつけください。
よろしくお願いいたします。
あなたの回答
tips
プレビュー