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

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

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

1788閲覧

Rails, Docker 環境下において,seedが反映されなくなった

nao_1

総合スコア2

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2021/05/11 12:57

Rails, Docker 環境下において,seedが反映されなくなった

まず,タイトルの問題が発生するまでの経緯を説明します.
なんらかの原因でdocker環境でのlocalhostへの接続がずっと待機中になってしまう問題が発生し,かつDocker Desktopもうまく起動しない状態になったのでどうしようもなく,dockerをインストールしなおしました.

その後,作業を再開するために
再度docker-compose upし,localhostに接続すると下記のようなエラーが出ました.

ActiveRecord::ConnectionNotEstablished Mysql2::Error Unknown database

そのため,https://qiita.com/suzy1031/items/1b4e1d717b6052a02307を参考に
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)
docker-compose exec app rails db:create を行いました.

下記コマンド実行後,
docker-compose run --rm app rake db:migrate
docker-compose run --rm app rake db:seed
再度localhostに接続すると接続はうまくできるようになったのですが,データベースにseed.rbが反映されなくなってしまいました.
この問題の解決策を教えていただきたいです.

localhostへの接続が待機中になってしまう問題が発生する前まではうまくlocalhostへの接続もでき作業に問題はなかったのでファイルに問題はないように思いますが,下記に提示しておきます.
関係ないかもしれませんが,localhostへの接続が待機中になってしまう問題はデータベースが絡むページで起こっていたように思います(html,cssのみのページは問題なく表示されていた).

どうかご教授お願いいたします.

/Dockerfile FROM ruby:2.6.6 # リポジトリを更新し依存モジュールをインストール RUN apt-get update -qq && \ apt-get install -y build-essential \ nodejs # yarnパッケージ管理ツールインストール RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ 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 && apt-get install -y yarn # Node.jsをインストール RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ apt-get install -y nodejs #imagemagick # RUN apt-get update -qq && apt-get install -y imagemagick # ルート直下にwebappという名前で作業ディレクトリを作成(コンテナ内のアプリケーションディレクトリ) RUN mkdir /webapp WORKDIR /webapp # ホストのGemfileとGemfile.lockをコンテナにコピー ADD Gemfile /webapp/Gemfile ADD Gemfile.lock /webapp/Gemfile.lock # bundle installの実行 RUN bundle install # ホストのアプリケーションディレクトリ内をすべてコンテナにコピー ADD . /webapp # puma.sockを配置するディレクトリを作成 RUN mkdir -p tmp/sockets
version: '3' services: app: build: context: . command: bundle exec puma -C config/puma.rb ports: - 3000:3000 volumes: - .:/webapp - tmp-data:/webapp/tmp - log-data:/webapp/log depends_on: - db db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - '3306:3306' volumes: - db-data:/var/lib/mysql web: build: context: containers/nginx volumes: - public-data:/webapp/public - tmp-data:/webapp/tmp ports: - 80:80 depends_on: - app volumes: public-data: tmp-data: log-data: db-data:

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問に記載されているコマンドの実行だけであれば、
再インストール前のボリューム(データベースの情報など)がそのまま残っています。

Docker イメージやコンテナは作り直されていますが、rails db:create を実行しても以前のものがそのままのこっており、何かしらデータベースに接続できないため Mysql2::Error Unknown database と出ているように見えます。

今の docker-compose up などを作成したディレクトリは動作確認用として残しておき、
別に、新しいディレクトリを作成し、そこで再度コマンドの実行を試みられてはいかがでしょうか。
ソースコードや競って手順などが適切であれば、別の場所で動くでしょう。

投稿2021/05/11 19:48

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nao_1

2021/05/12 02:55 編集

回答ありがとうございます! 恥ずかしながらボリュームの概念を理解できていませんでした. 再度別でやり直したらうまくいきました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問