前提・実現したいこと
DockerでRails6の環境を構築する。
バージョン
ruby 2.6.5
rails 6.0.3
発生している問題・エラーメッセージ
ターミナルで、以下を実行すると、エラーが起こります。
docker build .
docker-compose exec web bash
rails new . --force --database=postgresql --skip-bundle ※ここでエラー発生
なぜ、上手くgemインストールされないのかがわかりません。
rails new . --force --database=postgresql --skip-bundle を実行 //省略 create test/application_system_test_case.rb create storage create storage/.keep create tmp/storage create tmp/storage/.keep remove config/initializers/cors.rb remove config/initializers/new_framework_defaults_6_0.rb rails webpacker:install Could not find gem 'pg (>= 0.18, < 2.0)' in any of the gem sources listed in your Gemfile. Run `bundle install` to install missing gems.
該当のソースコード
dockerfile
1FROM ruby:2.6.5 2RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - 3RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list 4RUN apt-get update 5RUN apt-get install -y \ 6 build-essential \ 7 libpq-dev \ 8 nodejs \ 9 postgresql-client \ 10 yarn 11WORKDIR /rails6-container 12COPY Gemfile Gemfile.lock /rails6-container/ 13#2つのコピー先がrails6-container 14RUN bundle install
Gemfile
1source 'https://rubygems.org' 2gem 'rails', '~> 6.0.3'
dockercompose
1version: "3" 2volumes: 3 db-data: 4 5services: 6 web: 7 build: . 8 ports: 9 - "3000:3000" 10 volumes: 11 - ".:/rails6-container" 12 environment: 13 - "DATABASE_PASSWORD=postgres" 14 tty: true 15 stdin_open: true 16 depends_on: 17 - db 18 links: 19 - db 20 21 db: 22 image: postgres 23 volumes: 24 - "db-data:/var/lib/postgresql/data" 25 environment: 26 - "POSTGRES_USER=postgres" 27 - "POSTGRES_PASSWORD=postgres" 28 - "POSTGRES_HOST_AUTH_METHOD=trust"
試したこと
以下の手順を踏むと、上手くいきます。
①docker-compose exec web bash でコンテナに入り、bundle install を実行。
②rails new . --force --database=postgresql --skip-bundle
で実行した際に作られたファイルやフォルダを削除し、Dockerfile Gemfile Gemfil.lock Docker-compose.yml のみにする。
③rails new . --force --database=postgresql --skip-bundleを再度実行。
このようにすると上手くできます。
ただ、作業が面倒な為、一発でbundle installされるようにしたいのですが、どのような記述をしたらよろしいのでしょうか??ご教授の程よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/31 11:54
2020/12/31 12:18
2020/12/31 13:19
2020/12/31 13:21