前提・実現したいこと
$ bundle exec cap production deployでデプロイしたい
ここに質問の内容を詳しく書いてください。
railsでアプリケーションを作っています。アプリにEC2を導入しその後DockerとCircleCIを導入しました。
導入した後に自動デプロイするとmysqlエラーになりました。
発生している問題・エラーメッセージ
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (2)
該当のソースコード
database.yml
yml
1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: root 6 password: password 7 socket: /tmp/mysql.sock 8 host: db 9 10development: 11 <<: *default 12 database: errors_original_app_development 13 14test: 15 <<: *default 16 database: errors_original_app_test 17 18production: 19 <<: *default 20 adapter: mysql2 21 encoding: utf8 22 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 23 username: root 24 password: 25 socket: /tmp/mysql.sock 26 username: root 27 database: errors_original_app_production 28 password: <%= ENV['DATABASE_PASSWORD'] %> 29 socket: /var/lib/mysql/mysql.sock
docker-compose.yml
yml
1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 environment: 6 MYSQL_ROOT_PASSWORD: password 7 MYSQL_DATABASE: root 8 ports: 9 - "4306:3306" 10 volumes: 11 - ./mysql-confd:/etc/mysql/conf.d 12 13 14 web: 15 build: . 16 command: rails s -p 3000 -b '0.0.0.0' 17 volumes: 18 - .:/app_name 19 ports: 20 - "3000:3000" 21 links: 22 - db 23 - chrome 24 stdin_open: true 25 tty: true 26 27 chrome: 28 image: selenium/standalone-chrome:3.141.59-dubnium 29 ports: 30 - 4444:4444
Dockerfile
FROM ruby:2.6.5 FROM ruby:2.6.5 WORKDIR /tmp RUN apt update && apt install -y lsb-release \ && apt remove -y libmariadb-dev-compat libmariadb-dev RUN wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-common_8.0.18-1debian10_amd64.deb \ https://dev.mysql.com/get/Downloads/MySQL-8.0/libmysqlclient21_8.0.18-1debian10_amd64.deb \ https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client-core_8.0.18-1debian10_amd64.deb \ https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client_8.0.18-1debian10_amd64.deb \ https://dev.mysql.com/get/Downloads/MySQL-8.0/libmysqlclient-dev_8.0.18-1debian10_amd64.deb RUN dpkg -i mysql-common_8.0.18-1debian10_amd64.deb \ libmysqlclient21_8.0.18-1debian10_amd64.deb \ mysql-community-client-core_8.0.18-1debian10_amd64.deb \ mysql-community-client_8.0.18-1debian10_amd64.deb \ libmysqlclient-dev_8.0.18-1debian10_amd64.deb 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 gem install bundler RUN bundle install ADD . $APP_ROOT
.circleci/config.yml
yml
1version: 2 2jobs: 3 build: 4 docker: 5 - image: circleci/ruby:2.6.5-node-browsers 6 environment: 7 RAILS_ENV: test 8 MYSQL_HOST: 127.0.0.1 9 MYSQL_USERNAME: 'root' 10 MYSQL_PASSWORD: '' 11 MYSQL_PORT: 3306 12 - image: circleci/mysql:5.6 13 environment: 14 MYSQL_ALLOW_EMPTY_PASSWORD: true 15 MYSQL_ROOT_PASSWORD: '' 16 MYSQL_DATABASE: circle_ci_test-test 17 18 working_directory: ~/circle-ci-test 19 20 steps: 21 - checkout 22
試したこと
・EC2のデータベースを作り直した「https://qiita.com/iiyama_makoto/items/215d6b1b6fe0bd234a4c」
・綴りミスはない「https://teratail.com/questions/258722」
・参考資料が見当たらない
補足情報(FW/ツールのバージョンなど)
ruby 2.6.5
rails 6.0.3.4
mysql 8.0.21
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。