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

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

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

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

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Ruby on Rails

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

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

Q&A

解決済

1回答

9218閲覧

docker-compose upするとentrypoint.shでrails: not foundのエラーが出る

batacon

総合スコア1

docker-compose

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

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Ruby on Rails

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

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

0グッド

0クリップ

投稿2020/05/04 15:48

前提・実現したいこと

https://medium.com/@fishpercolator/how-to-separate-frontend-backend-with-rails-api-nuxt-js-and-devise-jwt-cf7dd9da9d16
このブログを参考に、Dockerを利用してRails api + Nuxtのアプリケーションを作成しようとしています。

localhost:3000でNuxtの初期画面を表示させることはできましたが、localhost:8080で表示されるべきRailsの初期画面が出ずにいる状況です。

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

docker-compose upを実行した際に以下のエラーが発生します

9755b89fe1c9_rails-nuxt_backend_1 | /usr/bin/entrypoint.sh: line 8: exec: rails: not found

entrypoint.shの8行目で、Dockerfileに記述したrails server -p 8080 -b 0.0.0.0が実行されるはずなのですが、そこでrails: not foundと言われてしまいました。

該当のソースコード

backend/Dockerfile

Dockerfile

1FROM ruby:2.6 2RUN apt-get update -qq && apt-get install -y nodejs postgresql-client 3 4ARG UID 5RUN adduser rails --uid $UID --disabled-password --gecos "" 6 7ENV APP /usr/src/app 8RUN mkdir $APP 9WORKDIR $APP 10 11COPY Gemfile* $APP/ 12RUN bundle install -j3 --path vendor/bundle 13 14COPY . $APP/ 15 16COPY entrypoint.sh /usr/bin/ 17RUN chmod +x /usr/bin/entrypoint.sh 18ENTRYPOINT ["entrypoint.sh"] 19EXPOSE 8080 20 21CMD ["rails", "server", "-p", "8080", "-b", "0.0.0.0"]

frontend/Dockerfile

Dockerfile

1FROM node:10 2 3ARG UID 4RUN adduser frontend --uid $UID --disabled-password --gecos "" 5 6ENV APP /usr/src/app 7RUN mkdir $APP 8WORKDIR $APP 9 10COPY package.json yarn.lock $APP/ 11RUN yarn 12 13COPY . $APP/ 14 15CMD ["yarn", "run", "dev"]

docker-compose.yml

yml

1version: '3' 2services: 3 db: 4 image: postgres 5 environment: 6 POSTGRES_DB: 'db' 7 POSTGRES_PASSWORD: password 8 ports: 9 - '5432' 10 backend: 11 build: 12 context: backend 13 args: 14 UID: ${UID:-1001} 15 volumes: 16 - ./backend:/usr/src/app 17 ports: 18 - '8080:8080' 19 depends_on: 20 - db 21 user: rails 22 frontend: 23 build: 24 context: frontend 25 args: 26 UID: ${UID:-1001} 27 volumes: 28 - ./frontend:/usr/src/app 29 ports: 30 - '3000:3000' 31 user: frontend

entrypoint.sh

sh

1#!/bin/bash 2set -e 3 4# Remove a potentially pre-existing server.pid for Rails. 5rm -f /rails-nuxt/tmp/pids/server.pid 6 7# Then exec the container's main process (what's set as CMD in the Dockerfile). 8exec "$@"

試したこと

  • entrypoint.shの8行目をexec $@に変えてみる
  • docker for macの再起動
  • docker-compose buildし直し

いずれも変化なしでした。

補足情報(FW/ツールのバージョンなど)

Gemfile

1source 'https://rubygems.org' 2git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4ruby '2.6.6' 5 6gem 'rails', '~> 6.0.2', '>= 6.0.2.1' 7gem 'pg', '>= 0.18', '< 2.0' 8gem 'puma', '~> 4.1' 9gem 'bootsnap', '>= 1.4.2', require: false 10 11group :development, :test do 12 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 13 gem 'rspec-rails' 14 gem 'factory_bot_rails' 15end 16 17group :development do 18 gem 'listen', '>= 3.0.5', '< 3.2' 19end 20 21gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

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

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

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

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

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

guest

回答1

0

ベストアンサー

すみません、 ruby と rails については全く知らないのですが、単純に rails がインストールされていないのではないでしょうか?

backend/Dockerfile で rails をインストールされてはどうでしょうか?

Dockerfile

1... 2RUN gem install rails

投稿2020/05/04 23:25

mit0223

総合スコア3401

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

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

batacon

2020/05/05 00:33

盲点でした... そのようにしたところ解決いたしました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問