前提・実現したいこと
Docker環境でrailsにてアプリを作成しておりましたがdocker-compose down後にローカル環境で
gem "kaminari" ローカル環境でbundle installをしてしまったので
この後、
docker-compose up -d --build
↓
docker-compose run web bundle install
↓
docker-compose run web bundle exec rake db:createを実行したところ
Starting book-match_db_1 ... done Creating book-match_web_run ... done Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) Couldn't create '' database. Please check your configuration. rake aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
というエラーが表示されmysqlのデータベースが作成できない状態です。
※docker-compose upを実行しhttp://localhost:3000/にアクセスをしても
We're sorry, but something went wrong. If you are the application owner check the logs for more information.
とトップページに表示されてしまいます。
該当のソースコード
database.yml
database.yml
1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: <%= ENV.fetch('DB_USERNAME', 'root') %> 6 password: <%= ENV.fetch('DB_PASSWORD', 'password') %> 7 socket: /tmp/mysql.sock 8 host: <%= ENV.fetch('DB_HOST', 'db') %> 9development: 10 <<: *default 11 database: book_match_development 12test: 13 <<: *default 14 database: book_match_test 15 host: <%= ENV.fetch('DB_HOST', 'db') %>
dockerfile
1FROM ruby:2.6.5 2 3ENV RAILS_ENV=production 4 5RUN apt-get update -qq && \ 6 apt-get install -y build-essential \ 7 libpq-dev \ 8 nodejs 9RUN export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 && apt-get update && apt-get install -y curl apt-transport-https wget && \ 10 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 11 echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 12 apt-get update && apt-get install -y yarn 13RUN mkdir /app_name 14 15ENV APP_ROOT /app_name 16WORKDIR $APP_ROOT 17 18ADD ./Gemfile $APP_ROOT/Gemfile 19ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock 20 21RUN gem install bundler 22RUN bundle install 23ADD . $APP_ROOT
docker
1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 ports: 6 - "4306:3306" 7 env_file: db.env 8 9 web: 10 build: . 11 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 12 volumes: 13 - .:/app_name 14 ports: 15 - "3000:3000" 16 depends_on: 17 - db 18 env_file: db.env
db.env
db.env
1DB_USERNAME=root 2DB_PASSWORD=password 3DB_HOST=db 4MYSQL_ROOT_PASSWORD=password
試したこと
% docker ps を実行すると
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c17382f73d44 mysql:5.7 "docker-entrypoint.s…" 56 minutes ago Up 56 minutes 33060/tcp, 0.0.0.0:4306->3306/tcp book-match_db_1
と表示がありmysqlに問題があるというよりはローカルに接続しようとしている設定?に問題がありそうでした。
補足情報(FW/ツールのバージョンなど)
ruby 2.6.5
bundler 2.1.4
rails 6.0.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/21 08:50