前提・実現したいこと
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.
あなたの回答
tips
プレビュー