🤔

docker-compose run web rails db:createができない(Can't connect to local〜)

2023/04/25に公開

環境

・M1 Mac
・dockerを使用してrails 7.0.4.3、ruby 3.1.4、mysql 5.7の環境

docker-compose run web rails db:create できない

docker-compose run web rails db:create

実行すると以下のエラーがでました。

Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
Couldn't create '' database. Please check your configuration.
rails aborted!
ActiveRecord::ConnectionNotEstablished: Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
Caused by:
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)

解決策

さまざまな対応策を試しましたが、最終的にdocker-compose.ymlに、
環境変数 environment:RAILS_ENV: development を追記することでエラーが解消しました。

docker-compose.yml
・
・途中省略
・
 web:
        build: .
        command: bundle exec rails s -p 3000 -b '0.0.0.0'
        volumes:
            - ./src:/app
        ports:
            - "3000:3000"
        environment:
            RAILS_ENV: development #追加
        depends_on:
            - db

参考記事
https://ja.stackoverflow.com/questions/80924/docker-compose-exec-web-bundle-exec-rake-dbmigrateをするとcant-connect-to-local-my

Discussion