docker+Mysql+railsにてrials db:migrateを実行するもMysql2::Error::ConnectionError:Unknown MySQL server host 'db' (0)となりポートフォリオ制作が進まない状態です。(Rspecも動作しません)
いつも通りネットから情報を仕入れて解決しようとするも良い情報にヒットせず、ここ何日間か解決できずにいます。
(サーバーは立ち上がるが、Mysqlとの接続がうまくいっていないと思われます)
Dockerfile
1FROM ruby:2.6.3 2 3# リポジトリを更新し依存モジュールをインストール 4RUN apt-get update -qq && \ 5 apt-get install -y build-essential \ 6 nodejs 7 8# ルート直下にmy_appという名前で作業ディレクトリを作成(コンテナ内のアプリケーションディレクトリ) 9RUN mkdir /my_app 10WORKDIR /my_app 11 12# ホストのGemfileとGemfile.lockをコンテナにコピー 13ADD Gemfile /my_app/Gemfile 14ADD Gemfile.lock /my_app/Gemfile.lock 15 16# bundle installの実行 17RUN bundle install 18 19# ホストのアプリケーションディレクトリ内をすべてコンテナにコピー 20ADD . /my_app 21 22# puma.sockを配置するディレクトリを作成 23RUN mkdir -p tmp/sockets 24
Dockercompose
1version: '3' 2services: 3 app: 4 build: 5 context: . 6 env_file: 7 - ./environments/db.env 8 command: bundle exec puma -C config/puma.rb 9 volumes: 10 - .:/my_app 11 - public-data:/my_app/public 12 - tmp-data:/my_app/tmp 13 - log-data:/my_app/log 14 depends_on: 15 - db 16 tty: true 17 db: 18 image: mysql:5.7 19 env_file: 20 - ./environments/db.env 21 volumes: 22 - db-data:/var/lib/mysql 23 ports: 24 - "3306:3306" 25 tty: true 26 web: 27 build: 28 context: containers/nginx 29 volumes: 30 - public-data:/my_app/public 31 - tmp-data:/my_app/tmp 32 ports: 33 - "3000:80" 34 depends_on: 35 - app 36volumes: 37 public-data: 38 tmp-data: 39 log-data: 40 db-data: 41
database
1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: <%= ENV.fetch('MYSQL_USER') { 'root' } %> 6 password: <%= ENV.fetch('MYSQL_ROOT_PASSWORD') { 'db_root_password' } %> 7 host: <%= ENV.fetch('DATABASE_HOST') { 'db' } %> 8 port: <%= ENV.fetch('DATABASE_PORT') { 3306 } %> 9 10development: 11 <<: *default 12 database: my_app_development 13 14test: 15 <<: *default 16 database: my_app_test
dbenv
1MYSQL_ROOT_PASSWORD=db_root_password 2MYSQL_USER=root 3MYSQL_PASSWORD=password 4DATABASE_HOST=db
docker-compose ps
my_app_app_1 bundle exec puma -C config ... Up
my_app_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
my_app_web_1 /bin/sh -c /usr/sbin/nginx ... Up 0.0.0.0:3000->80/tcp
なお、独学者かつ駆け足で環境構築したこともあり、基本的な知識が欠如しております。
根本的に間違っている場合は、それを教えて頂くだけでも構いません。
また、実際にMysqlよりpostgresqlの方が扱いやすかったりするのでしょうか?
二重の質問になってしまい申し訳ありませんが、どうかご教示ください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/13 09:40
2020/08/14 12:29
2020/08/14 12:51 編集
2020/08/14 13:26
2020/08/14 13:41
2020/08/14 15:31
2020/08/14 16:00
2020/08/14 16:42
2020/08/15 23:00 編集
2020/08/16 01:55
2020/08/16 02:41 編集
2020/08/16 02:49
2020/08/16 03:15
2020/08/16 03:23
2020/08/16 03:49
2020/08/16 05:36
2020/08/16 14:44
2020/08/16 18:41
2020/08/17 15:03 編集
2020/08/17 15:56
2020/08/18 14:57