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

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

新規登録して質問してみよう
ただいま回答率
87.20%
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つです

解決済

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

otdsh9432
otdsh9432

総合スコア53

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つです

2回答

0評価

0クリップ

566閲覧

投稿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

FROM ruby:2.6.5 # apt-utils関連のエラーを表示させないようにする ENV DEBCONF_NOWARNINGS yes RUN apt-get update -qq && \ apt-get install -y --no-install-recommends build-essential \ libpq-dev \ nodejs \ && rm -rf /var/lib/apt/lists/* # 作業ディレクトリの作成、設定 RUN mkdir /myapp WORKDIR /myapp # ホスト側(ローカル)のGemfileを追加する COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock # Gemfileのbundle install RUN bundle install COPY . /myapp

docker-compose.yml

yml

version: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: myfavrest-app_development ports: - "3306:3306" web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' tty: true stdin_open: true volumes: - .:/myapp ports: - "3000:3000" depends_on: - db

###Gemfile

Gemfile

source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.5' (以下略)

Gemfile.lock

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

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

イメージ1

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

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

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つです