#概要
現在Rails5+MySQLにてアプリケーションを開発中でして、
開発途中でDockerを導入しました。
本番環境はAWS EC2+Capistrano+Nginxで構築しており、
Docker導入前は問題なく動作しておりました。
Docker導入後も、ローカル環境では問題なく動作しているのですが、
Capistranoで自動デプロイを試みたところエラーとなりました。
Docker初学者で大変恐縮なのですが、ヒントありましたらご教示いただけますと幸いです。
#エラー内容
bundle exec cap production deployを実行すると下記のエラーがでます。
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (25)
#現在のコード
【Dockerfile】
FROM ruby:2.5.1 RUN apt-get update -qq && \ apt-get install -y build-essential \ libpq-dev \ nodejs RUN mkdir /app_name ENV APP_ROOT /app_name WORKDIR $APP_ROOT ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install ADD . $APP_ROOT
【docker-compose.yml】
version: "3" services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "4306:3306" web: build: . command: rails s -p 3000 -b '0.0.0.0' volumes: - .:/app_name ports: - "3000:3000" links: - db
【database.yml】
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password # docker-compose.ymlのMYSQL_ROOT_PASSWORD host: db # docker-compose.ymlのservice名 socket: /tmp/mysql.sock development: <<: *default database: app_name_development test: <<: *default database: app_name_test production: <<: *default database: app_name_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
#試みたこと
EC2にてサーバにログインしてDBを一度削除やリセットをしようとおもい、
RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:reset
を打ったところ、
Unknown MySQL server host 'db' (2) Couldn't drop database 'app_name_production' rails aborted! Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (2) /var/www/app/bin/rails:9:in `require' /var/www/app/bin/rails:9:in `<top (required)>' /var/www/app/bin/spring:15:in `require' /var/www/app/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:drop:_unsafe (See full trace by running task with --trace)
という表示になりました。
本番環境でもDocker構築のMySQLを参照しにいっているということでしょうか。
その場合、参照先を変えるという方法になるのでしょうか。
怪しいところありましたらご教示いただけますと大変幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。