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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

Q&A

1回答

3125閲覧

ruby:2.7.1-slimでRailsの開発環境を作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

docker-compose

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/05/26 02:09

編集2020/05/26 02:59

前提・実現したいこと

ネット上の情報を元に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に変更した際に他にも変更・追加するべき記述があればご教授いただけると幸いです。
以上、よろしくお願いいたします。

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

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

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

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

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

bsdfan

2020/05/26 06:22

https://hub.docker.com/_/ruby こちらにありますが、slimのほうはこういう使い方をするために作られていないです。何が必要かわからないなら通常のほうを使うように書かれています。 slimを使いたい理由はありますか? イメージサイズが理由なら、build-essentialをインストールしている時点で、slimに変える意味はほとんどないです。
退会済みユーザー

退会済みユーザー

2020/05/26 07:35

まずはご回答ありがとうございます。 https://hub.docker.com/_/ruby こちらのslimに関する記述は確認しております。 イメージサイズに関してはbuild-essentialなどに関してはmulti-stage buildを利用してメインコンテナから分離させる術を見つけ、こちらを試してみようかと考えております。
bsdfan

2020/05/26 08:26

そのあたりは理解された上でやられているということですね。 slimに変えたあと、docker-compose buildするときに、一度ディレクトリの状態はきれいにされてますか?
退会済みユーザー

退会済みユーザー

2020/05/26 12:35 編集

slimに変更する際は、本文内の「ファイル構成」以外のディレクトリ・ファイル群は全て削除し Gemfile、Gemfile.lockも初期化、Dockerのcontainer、image、volume、networkも全て削除した上で再度buildを実行しております。
guest

回答1

0

Docker Hub の Ruby イメージ ( https://hub.docker.com/_/ruby ) の情報を見ると、今回のような開発用途では slim の利用が推奨されていません。

「Image Variants」のセクションでは、

  • ruby の最小限のパッケージしか入っていない
  • ruby のデプロイ用途
  • ディスク容量の制約がない限り、デフォルトのイメージ使用を推奨

とあります。

同じ Dockerfile などを用いても動作しません。

エラーが出るのは、何かパッケージが足りないためです。

画面の表示に従って都度入れる必要があります。

投稿2021/04/10 20:37

zembutsu

総合スコア1584

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問