ローカル環境のCircleCIでMysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2)が出る
CircleCIでデータベースエラーが起こってしまい改善の仕方がわかりません。
Docker環境は導入しています。
本番環境はEC2です。
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
socket: /tmp/mysql.sock
ports: 3306
development:
<<: *default
socket: /tmp/mysql.sock
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
database: myapp_production
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
crcleci/config.yml
version: 2.1
jobs:
build:
docker:
- image: circleci/ruby:2.6.5-node
environment:
RAILS_ENV: test
- image: circleci/mysql:5.7-ram
environment:
MYSQL_DATABASE: myapp_test
MYSQL_ALLOW_EMPTY_PASSWORD: true
MYSQL_ROOT_HOST: '%'
MYSQL_USER: root
MYSQL_PORT: 3306
working_directory: ~/myapp
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
- v1-dependencies-
- run:
name: install dependencies
command: |
gem install bundler -v 2.0.1
bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
paths:
- ./vendor/bundle
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
# Database setup
- run:
name: Prepare db
command: |
bin/rails db:schema:load --trace
# run tests!
- run:
name: Run rspec
command: |
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
bundle exec rspec --format progress --color --format documentation
# collect reports
- store_test_results:
path: /tmp/test-results
- store_artifacts:
path: /tmp/test-results
destination: test-results
仮説
データベースが見つからないと言われているので、database.ymlのhostやsocketが間違っている
試したこと
・% mysql.server restartでmysql再起動
・Docker-compose up の状態でpush
・datebase.ymlのdefaultで、「password: password」と「host: db」をコメントアウトしてみる。
・socketを/var/lib/mysql/mysql.sockにしてみる。
・% mysql_config --socketで/tmp/mysql.sockがあるのを確認
このエラーで半月ほど解決できず、ハンズオン情報を読んでみてもわかりません。
それぞれの記述の意味もわかるのですが、なぜデータベースが見つからないのか・・・
どうかご指摘頂けませんでしょうか。
宜しくお願い申し上げます。
1