前提・実現したいこと
ネット上の情報を元にDockerでRuby on Railsの開発環境を作成しています。
アプリケーションコンテナのベースイメージにruby:2.7.1
を利用して正常に動作するところまではできたのですが、
ベースイメージをruby:2.7.1-slim
に変更すると動作しません。
該当のソースコード
ファイル構成
bash
1$ tree . 2. 3├── Dockerfile 4├── Gemfile 5├── Gemfile.lock 6└── docker-compose.yml
Dockerfile
FROM ruby:2.7.1 RUN apt-get update -qq && \ apt-get install -y build-essential libpq-dev nodejs RUN mkdir /app ENV APP_DIR /app WORKDIR ${APP_DIR} ADD Gemfile ${APP_DIR}/Gemfile ADD Gemfile.lock ${APP_DIR}/Gemfile.lock RUN bundle install ADD . ${APP_DIR} CMD [ "puma", "-C", "config/puma.rb" ] EXPOSE 3000
bash
1$ docker-compose build 2$ docker-compose run app rails new --api . --force --no-deps --database=mysql 3 4# 生成されたconfig/database.ymlを環境に合わせて編集後 5$ docker-compose up -d
Gemfile
source 'https://rubygems.org' gem 'rails', '~> 6'
発生している問題・エラーメッセージ
上記Dockerfileのruby:2.7.1
の部分をruby:2.7.1-slim
に変更して同様のコマンドを実行→エラー
bash
1$ docker-compose build 2$ docker-compose run app rails new --api . --force --no-deps --database=mysql
↓
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2 run bundle binstubs bundler Could not find gem 'mysql2 (>= 0.4.4)' in any of the gem sources listed in your Gemfile. run bundle exec spring binstub --all bundler: command not found: spring Install missing gem executables with `bundle install`
app
コンテナのベースイメージをruby:2.7.1
にしている時は正常に挙動しているものが
ruby:2.7.1-slim
にするとRailsの主要ファイル群は生成されるものの、上記のようにコケる(bundle installの部分?)のでその後の
docker-compose up -d
もコケてapp
コンテナが立ち上がりません。
ベースインメージをruby:2.7.1-slim
に変更した際に他にも変更・追加するべき記述があればご教授いただけると幸いです。
以上、よろしくお願いいたします。