67126


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

### 実現したいこと

**開発環境にDockerを使用し、Ruby on Railsの開発を行いたい。**  
そのために、既存のRailsアプリをDockerにて起動し、ブラウザのlocalhostで見れるようにしたい。（既存のRailsアプリはWSLにて動作していました。この度、WSLでなくDockerで開発しようと思い立ちました）

下記のQiita記事を参考に実施しています。

[既存のRailsアプリにDockerを導入する手順](https://qiita.com/kenzoukenzou104809/items/b9e716204e0cd0cea447)  
[丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for
Mac)](https://qiita.com/azul915/items/5b7063cbc80192343fc0#%E4%BD%95%E3%82%82%E3%81%AA%E3%81%84%E7%8A%B6%E6%85%8B%E3%81%8B%E3%82%89rails%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A8mysql%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E7%AB%8B%E3%81%A6%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%82%B7%E3%82%A7%E3%83%AB2019-02-04%E8%BF%BD%E8%A8%98)

### 使用環境

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

### 現在の状態

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

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

＜エラーメッセージ＞

[code]

    web：Could not locate Gemfile or .bundle/ directory と表示後、
    　　　exited with code 10と表示されました。
    
[/code]

３．webのみエラーが出ている様子です。調査中ですが、調べる時間があまりに長時間かかっているため、質問させていただいた次第です。（DBコンテナは起動しているようです）

※ホスト側のRailsアプリのディレクトリ  
C:\mydev\myfavrest-app

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

※docker-compose upを実行時のディレクトリ（カレントディレクトリからRailsアプリのディレクトリへ移動しました）  
C:\mydev\myfavrest-app  
→ディレクトリ構造（1階層目のみ）

[code]

    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/
    
[/code]

### Dockerfile

[code]

    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
    
[/code]

### docker-compose.yml

[code]

    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      
    
[/code]

### database.yml

[code]

    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以下略）
    
[/code]

### Gemfile

[code]

    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'
    （以下略）
    
[/code]

### Gemfile.lock

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

### エラー発生時の画面キャプチャ（webコンテナのエラー）

[![実行画面１](https://i.stack.imgur.com/N02Of.png)](https://i.stack.imgur.com/N02Of.png)

並行して調査中ではございますが、お力添えいただきたい次第です。  
不足情報等ございましたら追加しますので、お手数をおかけしますが、ご指摘いただけますと幸いです。  
どうぞよろしくお願いいたします。  
なお、teratailでの回答が得られない状況のため、こちらのサイトにも質問させていただいております。teratailで進展があり次第、こちらのサイトにもすぐ状況更新させていただきます。  
<https://teratail.com/questions/264199>


CC BY-SA 4.0
2020-05-24T12:16:09.183
66944
2020-05-29T14:12:12.537
2020-06-17T08:14:45.997
-1
40311
question
ruby-on-rails mysql docker docker-compose
Railsコンテナにおける docker-compose up がエラーとなり起動できない


自己解決しました。  
volumeのマウントがきちんとできていないことが原因でした。  
`C:\mydev\myfavrest-
app`で作業していましたが、そこがvirtualboxの共有フォルダに含まれていませんでした。インストールしたあとデフォルト設定のまま特にいじっていなかったため、`c:\Users`しか共有されていませんでした。

virtualboxのdefaultマシンの、「設定」→「共有フォルダ」で、`C:\mydev`を`c/mydev`という名前で共有する設定を追加したところ、正常動作を確認することができました。


CC BY-SA 4.0
2020-05-29T14:12:12.537
67126
2020-05-29T14:12:12.537
40311
66944
answer