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

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

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

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

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

1763閲覧

既存のアプリでdocker-compose up後、db:createができない

F.Iku

総合スコア3

docker-compose

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

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2021/12/16 11:26

編集2021/12/16 11:34

前提・実現したいこと

既存のアプリに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が無いとエラーが出てしまいます。
イメージ説明

不足情報などありましたらご指摘ください。

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

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

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

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

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

guest

回答1

0

自己解決

dockerfile に

RUN gem install -v 6.1.4.1 rails

を追加したらエラー解消されました!

投稿2021/12/16 11:59

F.Iku

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問