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

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

ただいまの
回答率

89.97%

docker-composeによる rails new . でプロジェクトファイルが同ディレクトリに生成されない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 685

fuurin

score 4

 前提・実現したいこと

docker-composeを使ってRuby on RailsとPostgreSQLによる環境構築を行おうとしています.
OSはWindows10 Proで,docker-machineのドライバにはVirtualBox5.2.18を使用しています.
公式サイトにある説明に従って構築を進めております.

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

次のコマンドを実行するところで躓いています.

> docker-compose run web rails new . --force --database=postgresql

このコマンドを実行しても手元のディレクトリに新規プロジェクトのファイルが生成されずに困っています.

 試したこと

手元にファイルが生成されていない一方,コンテナ内には生成されているようです.

> docker-compose run web ls
Starting myapp_docker_db_1 ... done
Gemfile       Rakefile  config     lib           public   tmp
Gemfile.lock  app       config.ru  log           storage  vendor
README.md     bin       db         package.json  test

なので,マウントができていないのではないかと思い,少し調べてみました.

docker-compose.yml

version: '3'
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db


上記のソースコードのvolumesのところで,手元のディレクトリを.としていますが,これがWindowsだと読み込めないのではないかと思い,こちら(https://qiita.com/tomomomo1217/items/3e9664fd5290934f0815)を参考にCOMPOSE_CONVERT_WINDOWS_PATHS=1を設定してみましたが,ダメでした.(というか,docker-machine env defaultにすでに含まれていました.

ちなみに,Macだとうまくいき,ファイルが生成されました.

ターミナルは普段cmdを使っていますが,PowerShellや両者の管理者モードでも試してみましたが,やはりファイルは生成されませんでした.

他にも,仮想マシンをHyper-Vにしてみたり,こちらを参考にvolumesをダブルクォートで囲ったりしてみましたが,Windowsではうまくいきませんでした.

ご回答をお待ちしております.何卒宜しくお願い致します。

 補足情報

Dockerfile

FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

Gemfile

source 'https://rubygems.org'
gem 'rails', '5.2.0'

Gemfile.lock

空のファイルです. 

docker-composeの出力 

Creating network "myapp_docker_default" with the default driver
Pulling db (postgres:)...
latest: Pulling from library/postgres
802b00ed6f79: Pull complete
... 省略 ...
86bffc7855b0: Pull complete
Digest: sha256:1d26fae6c056760ed5aa5bb5d65d155848f48046ae8cd95c5b26ea7ceabb37ad
Status: Downloaded newer image for postgres:latest
Creating myapp_docker_db_1 ... done
Building web
Step 1/8 : FROM ruby:2.5
 ---> eb8759981348
Step 2/8 : RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
 ---> Running in f9d824c5b9d4
Reading package lists...
Building dependency tree...
Reading state information...
libpq-dev is already the newest version (9.6.10-0+deb9u1).
The following additional packages will be installed:
  dpkg-dev fakeroot libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libfakeroot libuv1
Suggested packages:
  debian-keyring
The following NEW packages will be installed:
  build-essential dpkg-dev fakeroot libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libfakeroot libuv1 nodejs
0 upgraded, 9 newly installed, 0 to remove and 4 not upgraded.
Need to get 5331 kB of archives.
After this operation, 17.0 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 dpkg-dev all 1.18.25 [1595 kB]
... 省略 ...
Get:9 http://deb.debian.org/debian stretch/main amd64 nodejs amd64 4.8.2~dfsg-1 [3440 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 5331 kB in 13s (396 kB/s)
Selecting previously unselected package dpkg-dev.
(Reading database ... 29376 files and directories currently installed.)
Preparing to unpack .../0-dpkg-dev_1.18.25_all.deb ...
Unpacking dpkg-dev (1.18.25) ...
... 省略 ...
Setting up libuv1:amd64 (1.9.1-3) ...
Setting up dpkg-dev (1.18.25) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Setting up libfakeroot:amd64 (1.21-3.1) ...
Setting up libalgorithm-diff-perl (1.19.03-1) ...
Setting up nodejs (4.8.2~dfsg-1) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode
Setting up build-essential (12.3) ...
Setting up fakeroot (1.21-3.1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
Setting up libalgorithm-merge-perl (0.08-3) ...
Setting up libalgorithm-diff-xs-perl (0.04-4+b2) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Removing intermediate container f9d824c5b9d4
 ---> fd396e5376f4
Step 3/8 : RUN mkdir /myapp
 ---> Running in 5aaf849ee6da
Removing intermediate container 5aaf849ee6da
 ---> e3ed80039a6d
Step 4/8 : WORKDIR /myapp
 ---> Running in 4764db56fe96
Removing intermediate container 4764db56fe96
 ---> 5aa7f0379888
Step 5/8 : COPY Gemfile /myapp/Gemfile
 ---> ed5f9cab9bde
Step 6/8 : COPY Gemfile.lock /myapp/Gemfile.lock
 ---> 62479b0b0a7e
Step 7/8 : RUN bundle install
 ---> Running in 978901636fc1
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.3.1
Installing rake 12.3.1
... 省略 ...
Fetching rails 5.2.0
Installing rails 5.2.0
Bundle complete! 1 Gemfile dependency, 41 gems now installed.
Bundled gems are installed into `/usr/local/bundle`
Removing intermediate container 978901636fc1
 ---> b2c5ca8c4c33
Step 8/8 : COPY . /myapp
 ---> 3aaa81688c3d
Successfully built 3aaa81688c3d
Successfully tagged myapp_docker_web:latest
WARNING: Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Could not find activesupport-5.2.1 in any of the sources
Run `bundle install` to install missing gems.
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • ただいまの回答率 89.97%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる