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