前提・実現したいこと
既存のアプリにdockerを導入したいです。
発生している問題・エラーメッセージ
必要なファイルを揃え、docker-compose up
した後にdocker-compose run web rails db:create
しても
/usr/bin/entrypoint.sh: line 8: exec: rails: not found
というエラーメッセージが出てしまいます。
該当のソースコード
Dockerfile
1FROM ruby:2.6.3 2RUN apt-get update -qq && apt-get install -y nodejs postgresql-client 3 4WORKDIR /port 5COPY Gemfile /port/Gemfile 6COPY Gemfile.lock /port/Gemfile.lock 7RUN gem install bundler 8RUN bundle install 9COPY . /port 10 11# コンテナー起動時に毎回実行されるスクリプトを追加 12COPY entrypoint.sh /usr/bin/ 13RUN chmod +x /usr/bin/entrypoint.sh 14ENTRYPOINT ["entrypoint.sh"] 15EXPOSE 3000 16 17# イメージ実行時に起動させる主プロセスを設定 18CMD ["rails", "server", "-b", "0.0.0.0"]
↓entrypoint.sh
entrypoint.sh
1#!/bin/bash 2set -e 3 4# Rails に対応したファイル server.pid が存在しているかもしれないので削除する。 5rm -f /port/tmp/pids/server.pid 6 7# コンテナーのプロセスを実行する。(Dockerfile 内の CMD に設定されているもの。) 8exec "$@"
docker-compose.yml↓
docker
1version: "3.9" 2services: 3 db: 4 image: postgres 5 volumes: 6 - ./tmp/db:/var/lib/postgresql/data 7 environment: 8 POSTGRES_DATABASE: app_user_role 9 ports: 10 - '5432:5432' 11 12 web: 13 build: . 14 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 15 volumes: 16 - .:/port 17 ports: 18 - "3000:3000" 19 depends_on: 20 - db
database.yml↓
database.yml
1default: &default 2 adapter: postgresql 3 encoding: unicode 4 pool: 5 5 timeout: 5000 6 host: db 7 username: app_user_role 8 password: password 9 10development: 11 <<: *default 12 database: port_development 13 14test: 15 <<: *default 16 database: port_test 17 18production: 19 <<: *default 20 database: port_production
試したこと
rails: not found
というエラーなので、Gemfile等がインストールされていないのかな?と思い、webコンテナ内に入ってディレクトリ構造を確認しましたがGemfileは確認できるし、そもそもDockerfileにbundle installしているからrailsはあるはずなんですがrailsが無いとエラーが出てしまいます。
不足情報などありましたらご指摘ください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。