🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

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

Ruby on Rails

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

Docker

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

Q&A

解決済

2回答

2659閲覧

Docker-compose upでエラーが発生。

kanix2020

総合スコア6

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

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

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2021/02/09 08:14

編集2021/02/09 08:18

前提・実現したいこと

参考Youtube動画

Dockerを用いてruby on railsの開発環境を整えたく、Youtube動画を参考に作業を行っておりましたが、

Terminal

1docker-compose up

コマンドを行った際にerrorが発生し、
処理が止まってしまいましたので悩んでおりますのでご質問をさせていただきます。

下記がエラー文と行った手順です

発生している問題・エラーメッセージ

Terminal

1 2db_1 | 2021-02-09 07:26:15+00:00 [Note] [Entrypoint]: Initializing database files 3db_1 | 2021-02-09T07:26:15.994909Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 4db_1 | 2021-02-09T07:26:15.998176Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 5db_1 | 2021-02-09T07:26:15.998264Z 0 [ERROR] Aborting 6db_1 | 7gymsco_db_1 exited with code 1 8web_1 | => Booting Puma 9web_1 | => Rails 5.2.4.4 application starting in development 10web_1 | => Run `rails server -h` for more startup options 11web_1 | Puma starting in single mode... 12web_1 | * Version 3.12.6 (ruby 2.5.8-p224), codename: Llamas in Pajamas 13web_1 | * Min threads: 5, max threads: 5 14web_1 | * Environment: development 15web_1 | * Listening on tcp://0.0.0.0:3000 16web_1 | Use Ctrl-C to stop

エラーコードが出る前には以下の手順で作業を行った

Terminal

1#①docker-compose.ymlの作成 2 3version: '3' 4 5services: 6 db: 7 image: mysql:5.7 8 environment: 9 MYSQL_USER: root 10 MYSQL_ROOT_PASSWORD: password 11 ports: 12 - "3306:3306" 13 volumes: 14 - ./db/mysql/volumes:/var/lib/mysql 15 16 web: 17 build: . 18 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 19 volumes: 20 - .:/myapp 21 - gem_data:/usr/local/bundle 22 ports: 23 - 3000:3000 24 depends_on: 25 - db 26 tty: true 27 stdin_open: true 28volumes: 29 gem_data:

Terminal

1#②Dockerfileの作成 2 3FROM ruby:2.5 4RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 5 6RUN mkdir /myapp 7WORKDIR /myapp 8 9COPY Gemfile /myapp/Gemfile 10COPY Gemfile.lock /myapp/Gemfile.lock 11 12RUN bundle install 13COPY . /myapp

Terminal

1#③gem file 2source 'https://rubygems.org' 3git_source(:github) { |repo| "https://github.com/#{repo}.git" } 4 5ruby '2.5.8'

Terminal

1#④Gemfile.lock 2中身なし

上記4つのファイルを作成後、下記のコマンドを行いました。

Terminal

1docker-compose run web rails new . -- force --database=mysql --skip bundle

Terminal

1docker-compose build

Terminal

1docker-compose up

すると、最初に記載したエラーが発生し、
Use Ctrl-C to stop
と表示され処理が止まってしまいます。

エラー発生後に試したこと

作成したコンテナ・イメージの削除後、
・docker-compose run web rails new . -- force --database=mysql --skip bundle
・docker-compose build
・docker-compose up
を再実行 ⇨ 原因解消されず。

docker-compose up
を成功させるためにはどうすれば良いでしょうか。ご教授をお願いします。

★初質問のため、質問の仕方が悪かったら申し訳ございません。 よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

役に立つかも知れないので追記しておきます。
docker-compose up -d
上記のコマンドでログ確認が不要なら、バックグランド起動できますよ。

投稿2021/02/09 12:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kanix2020

2021/02/09 13:01

ご丁寧にありがとうございます。 早速試してみました!! 便利なコマンドありがとうございます。  常用させて頂きます!
退会済みユーザー

退会済みユーザー

2021/02/09 13:07

いえいえ、こちらこそご丁寧に返信ありがとうございます。 私はDockerを学習中ですので、 知っていることを共有した内容がお役に立てて、嬉しいです。
kanix2020

2021/02/09 14:16

ありがとうございます。 すみません、もしよろしければ追加で質問よろしいでしょうか。。。 docker-compose run --rm web rails db:migrate を行った際、 Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2) というエラーが発生します。 docker-compose ps とコマンドを打つと DB1の状態が「Exit1」 となっておりました。 DB1のコンテナが起動していないということでしょうか。 もしよろしければ教えていただければ幸いです。。。! (ボリュームの削除・イメージの削除・コンテナの削除は試してみました。)
退会済みユーザー

退会済みユーザー

2021/02/09 14:54

dockerに関してはおっしゃる通りですね。 私も試してみましたが、コンテナを停止すると同じ状態で表示されました。 エラー内容は記述してある通り、MySQLサーバー接続がうまく行ってないみたいですね。 下記のURLが役に立つかも知れませんので記しておきますね。 docker-comoseでRailsの開発環境構築 https://qiita.com/skyriser/items/2cf98b747ed6577cc5ee よく使用するDockerコマンド https://qiita.com/LikeGeohotz/items/0e3cd9dfa67d7ff6ff96
kanix2020

2021/02/09 15:33

ありがとうございます!! 早速まずは イメージとコンテナを全て削除した後、 docker-comoseでRailsの開発環境構築 https://qiita.com/skyriser/items/2cf98b747ed6577cc5ee こちらの記事にある Dockerfileとdocker-compose.yml のコードをコピペしてビルドし直してみましたが うまくいきませんでした。 もう少し記事を熟読して考えてみます。 1つ気になったのですが、dockerfileにある FROM ruby:2.2.2 という記述のrubyバージョンはもしかして自分が今使用しているrubyのバージョンでなければ いけなかったりするのでしょうか?
退会済みユーザー

退会済みユーザー

2021/02/09 15:54

dockerは仮想環境のため、 kanix2020様のPCのRubyバージョンの影響はないですよ。 あとは、 紹介記事はMySQLではないので単純にコピペでのエラーが、 原因と思われます。 もう一度、イメージ削除等を行ってご参考にされているYoutubeの動画通りに環境構築を試されてください。 それでも不可なら私のDockerファイルをGithub上にアップロードするので、そちらを使って環境構築を試してみましょう!
kanix2020

2021/02/09 17:15

何から何までありがとうございます(T^T) 今もう一度ディレクトリから1つずつコマンドを確認しながら作成し直してみました。 すると ・docker-compose up のコマンドを実行したところで 「Could not find gem 'mysql2 (>= 0.4.4, < 0.6.0)' in any of the gem sources listed in your Gemfile.」 というエラーが発生しました。(この時点ではGemfile.lockの中身が空だった) そこでこちらの記事 「[Rails&Docker&MySQLの環境構築] Could not find gem ‘mysql2 (>= 0.4.4, < 0.6.0)’ in any of the gem sources listed in your Gemfile.とエラーメッセージが出てきた。」 (https://qiita.com/satto0303/items/c135c2279a1646921fc2) にある通り ・docker-compose run web bundle install(ここの時点でGemfile.lockに情報が書き込まれた) ・docker-compose up の順に行ってみました。 その後ブラウザでlocalhost:3000を確認したのですが 「Unknown MySQL server host 'db' (-2)」 と表示されており、起動されているコンテナを ・docker-compose ps で確認するとやはり同様のエラーが発生しておりました。(db1のStateがExit1となっている) 何度も申し訳ございません... お手隙の際にご教授をいただければ幸いです。 遅くまでありがとうございます。
退会済みユーザー

退会済みユーザー

2021/02/10 02:34 編集

kanix2020 様 githubの件ですが下記の記事の内容でもできたので、 共有致します。 お手数ですが下記のDockerコマンド実行と記事の手順で、 構築をお願い致します。 ※注意内容に該当する事もあると思われるので、注意をお願い致します。 私は記事の手順通りの作業で、Railsのlocalhost起動までできました。 1[作業前に現在のDockerイメージを全部削除] ※注意事項 全て削除しますので、現在の環境で他の開発環境も作成している場合は、 個別削除をお願い致します。 今回は「Dockerで環境構築が初めて」と言う、 前提条件で記述しております。 [実行前の前提条件] 削除の手順はコンテナを停止⇨削除してから、 イメージを削除する。この手順はルールなので注意。 [コマンド] コンテナ全削除 docker ps -aq | xargs docker rm イメージ全削除 docker images -aq | xargs docker rmi 2[rails5 + MySQL on Docker構築手順の実施] https://qiita.com/azul915/items/5b7063cbc80192343fc0 あとは、 個人的に今回のエラー内容が勉強になるので調べております。 少し分かったことをお伝えてしておきます。 ・「Could not find gem 'mysql2 (>= 0.4.4, < 0.6.0)' in any of the gem sources listed in your Gemfile.」 ⇨調べた内容を見てみると、 自分のPC(ローカル環境)にMySQLがないか、 以前にインストールしたMySQLが原因で出力される意見が多かったです。 [参考] https://qiita.com/0mgjptjw/items/764654c10150f6fb8cbb ・docker-compose ps で確認するとやはり同様のエラーが発生しておりました。(db1のStateがExit1となっている) ⇨こちらのExit1ですが、Linuxでは異常終了の意味になります。 kanix2020様も何か調べて分かったことがありましたら、 共有して頂けると幸いです。
kanix2020

2021/02/10 08:18 編集

ご丁寧にありがとうございます。うまく起動しました! 教えて頂きました通り、コンテナとイメージを全て削除した後、新しいフォルダを作成し、 2[rails5 + MySQL on Docker構築手順の実施] の記事を参考に ・Dockerfile ・docker-compose.yml ・Gemfile ・Gemlock.file を作成後、railsファイルをインストール・コンテナのbuildを試してみたところ、 docker-compose upもうまくいき、 ブラウザでrailsの初期画面「Yay! You’re on Rails!」が確認できました。 初心者の拙い説明に付き合ってくださりまして、ありがとうございます(T_T)! ですがなぜ、うまくいったが理解できていないため、 現在はできたファイルとできなかったファイルを照合して、原因を探っていますので 何か分かりましたら、こちらのコメントに追記したいと思います。 対比の画像を添付しておりますので、もしよろしければご確認をお願いいたします。 ★左側(うまくいかなかったファイルの内容) 右側(うまくいったファイルの内容) Dockerfile https://gyazo.com/e9784f4d2a6078496fced5229f3468f6 Docker-compose.yml https://gyazo.com/76cda4ebcb0fa3c4b821ce1f182c0b23 Gemfile https://gyazo.com/98c42a4b266c51327b7b731baf9e4ea0 Gemfile.lock https://gyazo.com/1a4ba213e0a228f688e20a52f1e29633
退会済みユーザー

退会済みユーザー

2021/02/10 08:49

kanix2020 様 それは良かったです!! また、画像の添付もありがとうございます。 後学の時間を使って少しずつ調べていきますね。 ご対応ありがとうございました。
kanix2020

2021/02/10 08:50

★「左側がうまくいったもの」でした。 大変、失礼しました。
退会済みユーザー

退会済みユーザー

2021/02/10 08:55

kanix2020 様 かしこまりました。 ありがとうございます。
guest

0

すみません、サーバーが立ち上がっているため、
Use Ctrl-C to stop
と表示されているという事がわかりました...
解決しました。

投稿2021/02/09 10:04

kanix2020

総合スコア6

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

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

gouf

2021/02/10 08:48

解決した場合、ベストアンサーを選出することでこの質問を解決済みにすることが出来ます
kanix2020

2021/02/10 08:51

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問