docker-compose rails mysql nginx の設定を下記のとおりとしているが、
rails db:migrate及びbin/rspecを走らせると
Mysql2::Error::ConnectionError:
Unknown MySQL server host 'db' (0)
のエラーとなり、このエラーからずっと抜け出せない。
docker-compose.yml
version: '3' services: app: build: context: . environment: RAILS_ENV: development env_file: - ./environments/db.env command: bundle exec puma -C config/puma.rb volumes: - .:/my_app - public-data:/my_app/public - tmp-data:/my_app/tmp - log-data:/my_app/log depends_on: - db db: image: mysql:5.7 env_file: - ./environments/db.env volumes: - db-data:/var/lib/mysql ports: - "3316:3306" web: build: context: containers/nginx volumes: - public-data:/my_app/public - tmp-data:/my_app/tmp ports: - "3000:80" depends_on: - app volumes: public-data: tmp-data: log-data: db-data:
database.yml
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('MYSQL_USER') { 'root' } %> password: <%= ENV.fetch('MYSQL_PASSWORD') { 'db_root_password' } %> host: db port: 3306 development: <<: *default database: my_app_development test: <<: *default database: my_app_test
db.env
MYSQL_ROOT_PASSWORD=db_root_password MYSQL_USER=app MYSQL_PASSWORD=password MYSQL_DATABASE=my_app_development DATABASE_HOST=db
grant_user.sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
nginx.conf
# プロキシ先の指定 # Nginxが受け取ったリクエストをバックエンドのpumaに送信 upstream my_app { # ソケット通信したいのでpuma.sockを指定 server unix:///my_app/tmp/sockets/puma.sock; } server { listen 80; # ドメインもしくはIPを指定 server_name example.com [or 192.168.xx.xx [or localhost]]; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # ドキュメントルートの指定 root /my_app/public; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; try_files $uri/index.html $uri @my_app; keepalive_timeout 5; # リバースプロキシ関連の設定 location @my_app { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://my_app; } }
追記
docker-compose.yml
version: '3' services: app: build: context: . environment: RAILS_ENV: development MYSQL_ROOT_PASSWORD: db_root_password MYSQL_USER: app MYSQL_PASSWORD: password MYSQL_DATABASE: my_app_development DATABASE_HOST: db command: bundle exec puma -C config/puma.rb volumes: - .:/my_app - public-data:/my_app/public - tmp-data:/my_app/tmp - log-data:/my_app/log depends_on: - db db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: db_root_password MYSQL_USER: app MYSQL_PASSWORD: password MYSQL_DATABASE: my_app_development DATABASE_HOST: db volumes: - db-data:/var/lib/mysql ports: - "3316:3306" web: build: context: containers/nginx volumes: - public-data:/my_app/public - tmp-data:/my_app/tmp ports: - "3000:80" depends_on: - app volumes: public-data: tmp-data: log-data: db-data:
database.yml
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('MYSQL_USER') { 'app' } %> password: <%= ENV.fetch('MYSQL_PASSWORD') { 'password' } %> host: db port: 3306 development: <<: *default database: my_app_development test: <<: *default database: my_app_test
db.env
削除
docker-compose down -v
docker-compose up -d
docker-compose run app rails db:migrate
成功
docker-compose run app rspec
成功?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 03:35
2020/08/21 05:04
2020/08/21 14:11
2020/08/21 14:15 編集
2020/08/21 14:20