質問: 開発環境に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: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と表示されました。 ``` 3.webのみエラーが出ている様子です。調査中ですが、調べる時間があまりに長時間かかっているため、質問させていただいた次第です。(DBコンテナは起動しているようです) ※ホスト側のRailsアプリのディレクトリ C:\mydev\myfavrest-app ※ターミナル起動時のカレントディレクトリ /c/Program Files/Docker Toolbox ※docker-compose upを実行時のディレクトリ(カレントディレクトリから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/ ``` ### 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 ``` 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' volumes: - .:/myapp ports: - "3000:3000" links: - db depends_on: - db ``` ### database.yml ``` default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: mydev password: password host: db socket: /var/run/mysqld/mysqld.sock development: <<: *default database: myfavrest-app_development (test以下略) ``` ### Gemfile ``` source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.5' gem 'mysql2', '>= 0.4.4', '< 0.6.0' (以下略) ``` ### Gemfile.lock Gemfile.lockは何も書かれていません。(中身は全て削除しました。) ### エラー発生時の画面キャプチャ(webコンテナのエラー) ![実行画面1](https://i.stack.imgur.com/N02Of.png) 並行して調査中ではございますが、お力添えいただきたい次第です。 不足情報等ございましたら追加しますので、お手数をおかけしますが、ご指摘いただけますと幸いです。 どうぞよろしくお願いいたします。 なお、teratailでの回答が得られない状況のため、こちらのサイトにも質問させていただいております。teratailで進展があり次第、こちらのサイトにもすぐ状況更新させていただきます。
回答: 自己解決しました。 volumeのマウントがきちんとできていないことが原因でした。 `C:\mydev\myfavrest-app`で作業していましたが、そこがvirtualboxの共有フォルダに含まれていませんでした。インストールしたあとデフォルト設定のまま特にいじっていなかったため、`c:\Users`しか共有されていませんでした。 virtualboxのdefaultマシンの、「設定」→「共有フォルダ」で、`C:\mydev`を`c/mydev`という名前で共有する設定を追加したところ、正常動作を確認することができました。