実現したいこと
dockerを使って、PJ直下ではなくapiディレクトリにrails api環境を構築したい
(最終目標はapiとfrontディレクトリに分けて、serverとfrontの環境を構築すること)
発生しているエラー内容
docker-compose upした際に以下のエラーが出力される
Could not locate Gemfile or .bundle/ directory
操作コマンド
docker-compose run --rm api rails new api --force --database=mysql --skip-bundle --api
ソースコード
docker-compose.yml
version: '3' services: api: build: context: ./api dockerfile: Dockerfile command: /bin/sh -c "rm -f /rails_api/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/rails_api ports: - "3000:3000" links: - db db: image: mysql:5.7 command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci environment: MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - mysql_vol:/var/lib/mysql volumes: mysql_vol:
api.Dockerfile
FROM ruby:2.6.6 RUN apt-get update -qq && apt-get install -y build-essential # 作業ディレクトリの作成、設定 RUN mkdir /rails_api ##作業ディレクトリ名をAPP_ROOTに割り当てて、以下$APP_ROOTで参照 ENV APP_ROOT /rails_api WORKDIR $APP_ROOT ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock # Gemfileのbundle install RUN bundle install ADD . $APP_ROOT
その他
apiディレクトリではなく、PJ直下に作成した際は同様のエラーが出ないことは確認済み
その際のソースの差分は以下のみ
- apiディレクトリではなく、直下にPJを作成
docker-compose run --rm api rails new . --force --database=mysql --skip-bundle --api
- docker-compose.yml(context の値が ./api ではなく、 ./)
services: api: build: context: . dockerfile: Dockerfile
参考にしたサイト
https://qiita.com/azul915/items/5b7063cbc80192343fc0
https://qiita.com/dl10yr/items/b76969da1c2c33595a4a
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/10 14:24