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

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

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

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

MySQL

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

Ruby on Rails

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

Docker

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

Q&A

解決済

2回答

1971閲覧

【Docker】開発環境でdocker-compose upするとwebコンテナでエラーが出る

otdsh9432

総合スコア55

docker-compose

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

MySQL

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

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/05/23 11:19

編集2020/05/28 13:44

開発環境にDockerを導入してRailsの開発を行いたいのですが、
docker-compose upが正常に動作せず、どうすれば動作させることができるかの解決策や、
もしくは、原因究明しかねているので、原因として考えられることだけでも、ご教示いただければと思い、質問させていただきます。

実現したいこと

開発環境にDockerを使用し、Ruby on Railsの開発を行いたい。
そのために、既存のRailsアプリをDockerにて起動し、ブラウザのlocalhostで見れるようにしたい。(既存のRailsアプリはWSLにて動作していました。この度、WSLでなくDockerで開発しようと思い立ちました)
下記のQiita記事を参考に実施しています。
既存のRailsアプリにDockerを導入する手順
丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)

使用環境

ツール:Docker Quickstart Terminal
VM(ゲストOS):VirtualBox(Linux2.6/ 3.x/ 4.X(64bit))
ホストOS:Windows10 Home

現在の状態

  1. Docker Quickstart Terminalを起動し、Dockerコマンドを打ち、動作することは確認しています。

  2. Dockerfileとdocker-compose.ymlは以下のように記述し、「docker-compose build --no-cache」は正常に完了できました。その後、「docker-compose up」を実行したところでエラーが出ています。

(エラーメッセージ)
web:Could not locate Gemfile or .bundle/ directory exited with code 10

  1. webのみエラーが出ている様子です。2つはそれぞれ分けて解決すべき、と考え、調査中ですが、調べる時間があまりに長時間かかっているため、質問させていただいた次第です。

※ホストOS側のRailsアプリのディレクトリ
C:\mydev\myfavrest-app
↓ディレクトリ構造(1階層目のみ)

drwxr-xr-x 1 ユーザ名 197121 0 4月 30 20:42 app/ drwxr-xr-x 1 ユーザ名 197121 0 5月 24 10:44 bin/ drwxr-xr-x 1 ユーザ名 197121 0 5月 24 10:44 config/ -rw-r--r-- 1 ユーザ名 197121 130 4月 11 18:36 config.ru drwxr-xr-x 1 ユーザ名 197121 0 5月 24 10:44 db/ -rw-r--r-- 1 ユーザ名 197121 416 5月 24 17:37 docker-compose.yml -rw-r--r-- 1 ユーザ名 197121 640 5月 24 16:50 Dockerfile -rw-r--r-- 1 ユーザ名 197121 2728 5月 24 16:54 Gemfile -rw-r--r-- 1 ユーザ名 197121 0 5月 24 10:44 Gemfile.lock drwxr-xr-x 1 ユーザ名 197121 0 4月 11 18:36 lib/ drwxr-xr-x 1 ユーザ名 197121 0 4月 22 23:39 log/ -rw-r--r-- 1 ユーザ名 197121 71 4月 11 18:36 package.json drwxr-xr-x 1 ユーザ名 197121 0 4月 29 21:39 public/ -rw-r--r-- 1 ユーザ名 197121 227 4月 11 18:36 Rakefile -rw-r--r-- 1 ユーザ名 197121 5707 5月 13 23:07 README.md drwxr-xr-x 1 ユーザ名 197121 0 5月 24 10:44 spec/ drwxr-xr-x 1 ユーザ名 197121 0 4月 11 18:36 storage/ drwxr-xr-x 1 ユーザ名 197121 0 4月 29 21:39 tmp/ drwxr-xr-x 1 ユーザ名 197121 0 4月 11 18:36 vendor/

※ターミナル起動時のカレントディレクトリ
/c/Program Files/Docker Toolbox

※docker-compose upを実行時のディレクトリ(カレントディレクトリからRailsアプリのディレクトリへ移動しました)
C:\mydev\myfavrest-app

Dockerfile

Dockerfile

1 2FROM ruby:2.6.5 3# apt-utils関連のエラーを表示させないようにする 4ENV DEBCONF_NOWARNINGS yes 5RUN apt-get update -qq && \ 6 apt-get install -y --no-install-recommends build-essential \ 7 libpq-dev \ 8 nodejs \ 9 && rm -rf /var/lib/apt/lists/* 10 11# 作業ディレクトリの作成、設定 12RUN mkdir /myapp 13WORKDIR /myapp 14 15# ホスト側(ローカル)のGemfileを追加する 16COPY Gemfile /myapp/Gemfile 17COPY Gemfile.lock /myapp/Gemfile.lock 18 19# Gemfileのbundle install 20RUN bundle install 21COPY . /myapp 22

docker-compose.yml

yml

1 2version: '3' 3services: 4 db: 5 image: mysql:5.7 6 environment: 7 MYSQL_ROOT_PASSWORD: password 8 MYSQL_DATABASE: myfavrest-app_development 9 ports: 10 - "3306:3306" 11 web: 12 build: . 13 command: bundle exec rails s -p 3000 -b '0.0.0.0' 14 tty: true 15 stdin_open: true 16 volumes: 17 - .:/myapp 18 ports: 19 - "3000:3000" 20 depends_on: 21 - db 22

###Gemfile

Gemfile

1 2source 'https://rubygems.org' 3git_source(:github) { |repo| "https://github.com/#{repo}.git" } 4 5ruby '2.6.5' 6(以下略) 7

Gemfile.lock

Gemfile.lockは何も書かれていません。(中身は全て削除しました。)

エラー現象の画面キャプチャ(webコンテナのエラー)

イメージ1

並行して調査中ではございますが、お力添えいただきたい次第です。
不足情報等ございましたら追加しますので、お手数をおかけしますが、ご指摘いただけますと幸いです。
どうぞよろしくお願いいたします。

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

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

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

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

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

yurak

2020/05/25 14:14

問題切り分けをしたいので、参考にされたQiitaに合わせ、変数($APP_ROOT)は使用しないでGemfileが見れるか確認いただけますか?
otdsh9432

2020/05/25 14:45 編集

ご確認いただきありがとうございます。変数($APP_ROOT)は使用せずDockerfileを記述したところ、同様に「Could not locate Gemfile or .bundle/ directory」のエラーが出ました。 そこで「docker run -it --rm -v "$(pwd):/myapp" ruby:2.6.5 /bin/sh」でシェルを立ち上げ、ls -a myapp/をすると、何もファイルが表示されませんでした。
yurak

2020/05/25 14:47

Dockerfileの ADD ./Gemfile $APP_ROOT/Gemfile がうまくいっていないためですね。DockerfileとGemfileは同じフォルダ階層にありますでしょうか。
otdsh9432

2020/05/25 23:24

ご確認いただきありがとうございます。質問文(「現在の状態」の箇所)に、Dockerfileがあるフォルダ階層でls -lした結果を貼り付けました。DockerfileとGemfileは同階層にあるようです。
otdsh9432

2020/05/27 13:57 編集

Thank you for your help. I didn't know that. I wrote COPY in Dockerfile instead of ADD. Then I tried "docker-compose build --no-cache" and "docker-compose up" again, but the same error message,"Could not locate Gemfile or .bundle/ directory" is displayed.
unoSSkR

2020/05/27 03:07 編集

Means ".. instead of ADD"? Ok. I am not sure your writing Dockerfile, but I wonder may need "ENV APP_ROOT /myapp" again before "COPY ./Gemfile $APP_ROOT/Gemfile" command, or writing "COPY Gemfile /myapp/Gemfile" without environment variable may work. HTH.
otdsh9432

2020/05/27 13:57

Sorry, it's a typo. Modified it. Thank you for your help. I will try.
unoSSkR

2020/05/27 14:02

Sorry but I will cancel my previous post because of wrong suggestion. Try to write simply "COPY Gemfile Gemfile" and "COPY Gemfile.lock Gemfile.lock", then see how it work.
otdsh9432

2020/05/27 15:01

Noted with thanks. I wrote simply "COPY Gemfile Gemfile" and "COPY Gemfile.lock Gemfile.lock", then "docker-compose build" was successful. However, the error message, "web_1 | Could not locate Gemfile or .bundle/ directory myfavrest-app_web_1 exited with code 10" was displayed again when "docker-compose up". I guess that the reason of this error is about Guest OS, VirtualBox environment. So, I will do some more research.
otdsh9432

2020/05/28 13:45

ありがとうございます。 最後のCOPY . /myappをコメントアウトして「docker-compose build --no-cache」から実施した場合も同じエラーが出ました。。 そちらの記事と同じように変えて(DBをRailsと同じサーバで実行で)、やってみたいと思います。 また、下記の記事は、同じエラーメッセージの事象のようなので、参考にしてみます。 https://github.com/docker/compose/issues/2535
guest

回答2

0

ベストアンサー

volumeのマウントがちゃんとできていないんじゃないでしょうか。

C:\mydev\myfavrest-appで作業されているようですが、そちらはvirtualboxの共有フォルダに含まれていますか?
インストールしたあと特にいじっていないなら、c:\Usersしか共有されていないはずです。

c:\Users以下のフォルダ(自分のDocumentsの下とか)で作業するようにすれば動くと思います。

今のフォルダのままでやるとしたら、virtualboxのdefaultマシンの、設定→共有フォルダで
C:\mydevc/mydevという名前で共有する設定を追加する必要があります。

投稿2020/05/29 04:56

編集2020/05/29 04:57
bsdfan

総合スコア4794

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

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

otdsh9432

2020/05/29 11:57 編集

ご回答いただきありがとうございます。virtualboxの共有フォルダ設定はインストール後いじっていなかったので、c:\mydevに変更したところ、webコンテナを起動することができました。共有フォルダの意味が理解できていなかったので、理解することができました。本当にありがとうございました。
guest

0

参考記事にはwebコンテナに[tty: true]と[stdin_open: true]が設定されていましたがそこは関係ないですかね?

投稿2020/05/26 00:18

編集2020/05/26 00:27
ken992

総合スコア18

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

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

otdsh9432

2020/05/26 14:27

ご回答いただきありがとうございます。ご指摘いただいたttyとstdin_openもdocker-compose.ymlに追加してみて再実行してみましたが、結果はエラー変わらずでした。。compose使わずwebコンテナだけ立ち上げて検証してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問