質問編集履歴

1 一部体裁を修正しました.

fuurin

fuurin score 10

2018/09/27 00:03  投稿

docker-composeによる rails new . でプロジェクトファイルが同ディレクトリに生成されない
### 前提・実現したいこと
docker-composeを使ってRuby on RailsとPostgreSQLによる環境構築を行おうとしています.
OSはWindows10 Proで,docker-machineのドライバにはVirtualBox5.2.18を使用しています.
[公式サイト](https://docs.docker.com/compose/rails/)にある説明に従って構築を進めております.
### 発生している問題・エラーメッセージ
次のコマンドを実行するところで躓いています.
```
> docker-compose run web rails new . --force --database=postgresql
```
このコマンドを実行しても手元のディレクトリに新規プロジェクトのファイルが生成されずに困っています.
### 試したこと
手元にファイルが生成されていない一方,コンテナ内には生成されているようです.
```
docker-compose run web ls
> 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にしてみたり,[こちら](https://qiita.com/atzu/items/4ca6306087e3813b0941)を参考に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の出力
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.
```
  • PostgreSQL

    2514 questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

  • Ruby on Rails

    18914 questions

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

  • Docker

    3159 questions

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

  • Windows 10

    3520 questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • docker-compose

    1070 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る