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

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

新規登録して質問してみよう
ただいま回答率
85.37%
docker-compose

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

1328閲覧

DockerでRails6の環境を構築する際にエラーが起こります

beginner.tanaka

総合スコア23

docker-compose

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/12/31 09:14

前提・実現したいこと

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されるようにしたいのですが、どのような記述をしたらよろしいのでしょうか??ご教授の程よろしくお願いします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

postgresqlは入ってますかね?
一般的なのはbrewで入れることかなと思います。

pgというgemはpostgresql依存的なので、postgresqlなしにはgemをインストール出来ないということでしょうか。

投稿2020/12/31 10:46

educ_gt

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginner.tanaka

2020/12/31 11:54

回答していただきありがとうございます! Dockerfileに、postgresql-client を記述しているのですが、間違い無いでしょうか??それとも別に記述するところがあるのでしょうか? すいません、よろしくおねがいします。
educ_gt

2020/12/31 12:18

あ、問題なさそうですね。 ちょっと僕が理解出来ていなかったです。 見た感じ、webpackerのinstall段階ではねられているようなので、 --skip-webpack-install  rails newにこのオプションもつけて実行して、あとからwebpackerのinstallを行うといかがでしょうか。 --skip-bundle しているので、rails new時にはbundle install がされず、一方でpostgresqlを指定しているので、必要なgemのpgが存在せずエラーが起きているという状況っぽいですね。 postgresqlの設定を後からやるとかすれば、rails new時にはエラーは出なくなりそうですが、そしたら後からpostgresqlの設定をやる必要が出てきそうです。
beginner.tanaka

2020/12/31 13:19

ありがとうございます!!後からrails webpacker:install 実行することで解決することができました!
educ_gt

2020/12/31 13:21

良かったです!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問