前提・実現したいこと
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]
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/05 00:33