前提・実現したいこと
現在,開発環境をDocker化してから、AWS(ECS)を利用してアプリケーションのデプロイを実装しております。
その実装途中で、ECS上データベースが作成されないエラーが生じたためご相談させてください。
デプロイはFargate
を利用しており、ECS
でクラスターの作成後にサービス設計を行なったところ、タスク上はRunningとなっているがタスクログにデータベースの作成に失敗したと表示されました。
発生している問題・エラーメッセージ
タスク上のログ(ECS)
2021-07-26 19:26:48Tasks: TOP => db:create 2021-07-26 19:26:48(See full trace by running task with --trace) 2021-07-26 19:26:48rails aborted! 2021-07-26 19:26:48ActiveRecord::ConnectionNotEstablished: Unknown MySQL server host 'db' (-2) 2021-07-26 19:26:48Caused by: 2021-07-26 19:26:48Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2) 2021-07-26 19:26:48Unknown MySQL server host 'db' (-2) 2021-07-26 19:26:48Couldn't create 'locat' database. Please check your configuration.
正常に作成された場合
該当のソースコード
entrypoint.sh
#!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /locat/tmp/pids/server.pid bundle exec rails db:create bundle exec rails db:migrate bundle exec rails db:seed # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"
Dockerfile(rails)
FROM ruby:3.0.1 ENV RAILS_ENV=production RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn WORKDIR /locat COPY Gemfile /locat/Gemfile COPY Gemfile.lock /locat/Gemfile.lock RUN gem install bundler RUN bundle install COPY . /locat COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 VOLUME /locat/public VOLUME /locat/tmp CMD ["rails", "server", "-b", "0.0.0.0"]
containers/nginx/Dockerfile
FROM nginx:1.19.1 RUN apt-get update && \ apt-get install -y apt-utils \ locales && \ sed -i -e 's/# ja_JP.UTF-8/ja_JP.UTF-8/g' /etc/locale.gen && \ locale-gen ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LC_TIME C COPY ./nginx.conf /etc/nginx/nginx.conf COPY ./conf.d/default.conf /etc/nginx/conf.d/default.conf
上記のファイルは、ECRのリポジトリへプッシュ済です。
ECSの設定は下記の記事を参考にして構築しました。
試したこと
- Docker環境上では、エラーが生じることなくアプリケーションが起動しているため、本番環境上でのエラーであることは分かっており、データベースが作成できていないためにアプリケーションの立ち上げが出来ない状態にある。
- ECS用に作成したRDSのインバウンドルールのセキュリティーグループとの連携ができていないことを考えて調べてみましたが、記載通り正しく入力されていた。
補足情報(FW/ツールのバージョンなど)
- rubymine
- ruby(3.0.1)
- Ruby on rails (6.1.3.1)
- Docker (20.10.7)
- Github
回答1件
あなたの回答
tips
プレビュー