質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

解決済

Herokuにデプロイする際にrake db:migrateができない

senseIY
senseIY

総合スコア187

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

2回答

0評価

0クリップ

315閲覧

投稿2022/03/28 02:19

解決したいこと

Heroku上にDockerを使用してデプロイしたのですが、heroku run bundle exec rake db:migrateが失敗してしまいます。エラーが長いので詳細はコメントで書きます

発生している問題・エラー

senseiy@senseIY-wsl:~/Portfolio$ heroku run bundle exec rake db:migrate RAILS_ENV=production -a dictum-app --trace › Warning: heroku update available from 7.59.4 to 7.60.0. Running bundle exec rake db:migrate RAILS_ENV=production --trace on ⬢ dictum-app... up, run.4841 (Free) ** Invoke db:migrate (first_time) ** Invoke db:load_config (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:load_config ** Execute db:migrate rake aborted! ActiveRecord::ConnectionNotEstablished: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:45:in `rescue in new_client' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:39:in `new_client' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:23:in `mysql2_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `public_send' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `new_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:926:in `checkout_new_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:905:in `try_to_checkout_new_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:866:in `acquire_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:588:in `checkout' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:428:in `connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:1128:in `retrieve_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_handling.rb:327:in `retrieve_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_handling.rb:283:in `connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/tasks/database_tasks.rb:237:in `migrate' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/railties/databases.rake:92:in `block (3 levels) in <main>' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/railties/databases.rake:90:in `each' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/railties/databases.rake:90:in `block (2 levels) in <main>' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:281:in `each' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain' /usr/local/bundle/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:116:in `each' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:83:in `block in run' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling' /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:80:in `run' /usr/local/bundle/gems/rake-13.0.6/exe/rake:27:in `<top (required)>' /usr/local/bundle/bin/rake:25:in `load' /usr/local/bundle/bin/rake:25:in `<top (required)>' /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:58:in `load' /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:58:in `kernel_load' /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:23:in `run' /usr/local/lib/ruby/3.0.0/bundler/cli.rb:478:in `exec' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' /usr/local/lib/ruby/3.0.0/bundler/cli.rb:31:in `dispatch' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start' /usr/local/lib/ruby/3.0.0/bundler/cli.rb:25:in `start' /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.32/libexec/bundle:49:in `block in <top (required)>' /usr/local/lib/ruby/3.0.0/bundler/friendly_errors.rb:103:in `with_friendly_errors' /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.32/libexec/bundle:37:in `<top (required)>' /usr/local/bin/bundle:23:in `load' /usr/local/bin/bundle:23:in `<main>' Caused by: Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:40:in `new' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:40:in `new_client' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:23:in `mysql2_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `public_send' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `new_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:926:in `checkout_new_connection' /usr/local/bundle/gems/activerecord-6.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:905:in `try_to_checkout_new_connection' … … /usr/local/bundle/gems/rake-13.0.6/lib/rake/application.rb:80:in `run' /usr/local/bundle/gems/rake-13.0.6/exe/rake:27:in `<top (required)>' /usr/local/bundle/bin/rake:25:in `load' /usr/local/bundle/bin/rake:25:in `<top (required)>' /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:58:in `load' /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:58:in `kernel_load' /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:23:in `run' /usr/local/lib/ruby/3.0.0/bundler/cli.rb:478:in `exec' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' /usr/local/lib/ruby/3.0.0/bundler/cli.rb:31:in `dispatch' /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start' /usr/local/lib/ruby/3.0.0/bundler/cli.rb:25:in `start' /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.32/libexec/bundle:49:in `block in <top (required)>' /usr/local/lib/ruby/3.0.0/bundler/friendly_errors.rb:103:in `with_friendly_errors' /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.32/libexec/bundle:37:in `<top (required)>' /usr/local/bin/bundle:23:in `load' /usr/local/bin/bundle:23:in `<main>' Tasks: TOP => db:migrate

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

senseIY

2022/03/28 02:20

### 環境 ・Rails6.15 Ruby3.0.3 開発環境はDocker wsl2  ・デプロイはHerokuにしました。 ### ソースコード ``` ### dockerfile FROM ruby:3.0.3-buster ENV RAILS_ENV=production RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update -qq && \ apt-get install -y --no-install-recommends \ build-essential \ nodejs \ yarn WORKDIR /app COPY ./src /app # Gemfile.lockを更新するため一度bundle install RUN bundle config --local set path 'vender/bundle' RUN bundle install ENV NODE_VERSION 15.0.1 RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && case "${dpkgArch##*-}" in \ amd64) ARCH='x64';; \ ppc64el) ARCH='ppc64le';; \ s390x) ARCH='s390x';; \ arm64) ARCH='arm64';; \ armhf) ARCH='armv7l';; \ i386) ARCH='x86';; \ *) echo "unsupported architecture"; exit 1 ;; \ esac \ && set -ex \ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ && node --version \ && npm --version COPY start.sh /start.sh RUN chmod 744 /start.sh CMD ["sh", "/start.sh"] # docker-compose.yml version: '3' services: db: image: mysql:8.0.28 container_name: "dictum_mysql" command: --default-authentication-plugin=mysql_native_password volumes: - ./src/db/mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password web: build: . container_name: "dictum_rails" command: /bin/bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - ./src:/app ports: - "3000:3000" depends_on: - db - chrome stdin_open: true tty: true environment: SELENIUM_REMOTE_URL: http://chrome:4444/wd/hub chrome: # image: selenium/standalone-chrome:latest image: selenium/standalone-chrome-debug:latest ports: - 4444:4444 - 5900:5900 #start.sh #!/bin/sh if [ "${RAILS_ENV}" = "production" ] then bundle exec rails assets:precompile fi bundle exec rails s -p ${PORT:-3000} -b 0.0.0.0 ``` # database.yml default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: db socket: /var/run/mysqld/mysqld.sock development: <<: *default database: app_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: app_test # As with config/credentials.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password or a full connection URL as an environment # variable when you boot the app. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # If the connection URL is provided in the special DATABASE_URL environment # variable, Rails will automatically merge its configuration values on top of # the values provided in this file. Alternatively, you can specify a connection # URL environment variable explicitly: # # production: # url: <%= ENV['MY_APP_DATABASE_URL'] %> # # Read https://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full overview on how database connection configuration can be specified. # production: <<: *default database: <%= ENV['APP_DATABASE'] %> username: <%= ENV['APP_DATABASE_USERNAME'] %> password: <%= ENV['APP_DATABASE_PASSWORD'] %> host: <%= ENV['APP_DATABASE_HOST'] %> ``` ### 自分で試したことや考察など ・ローカル環境ではdocker-compose exec web bundle exec rake db:migrateは成功します。なのでherokuの設定か環境変数辺りが怪しいです。 ・Dockerではmysqlのバージョンは8系を使っていますがherokuでは5系を使っていることが原因かもしれません。5系にグレードダウンすることも考えましたが、dbの整合性がおかしくなり、問題が複雑化する可能性があると考えたのでまだやっていません。また、herokuの8系は有料なうえ、たとえ8系にしても直る保証はないのでmysqlのバージョンを変更するのはどうしても解決しない時にしたいです。 ・heroku open -a dictum-app では接続はできており一応開くことはできますが、保存した画像がでないです。 何かしらアドバイスがあればよろしくお願いいたします。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです