Help us understand the problem. What is going on with this article?

docker-compose buildするときにbundle installやmysql-clientでコケた話

More than 1 year has passed since last update.

docker-compose buildする際に色々エラー踏んだので備忘録として書きます

2019 9/4追記
原因2について、こちらの記事も大変参考になるなーと感じたので載せときます
Circle CI で mysql-client が apt-get install できなくなってCI環境が壊れた話

一応修正前のソースコードも載せときますね
https://github.com/ityusuke/docker-test
Dockerfileはこんな感じで書いてます。

bash
FROM ruby:2.5.5

RUN apt-get update -qq && \ 
    apt-get install -y build-essential \ 
                             libpq-dev \
                         mariadb-client\        
                                 nodejs

RUN mkdir /app_name 

ENV APP_ROOT /app_name 
WORKDIR $APP_ROOT

ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock

RUN bundle install
ADD . $APP_ROOT

エラー文はこんな感じです。おそらくbundle installでコケてるのかな?と思ったのですが、具体的な解決方法が検討つかないので、有識者の方に知恵を貸して頂きました!

bash
ERROR:Service 'web' failed to build: The command '/bin/sh -c bundle install' returned a non-zero code: 18

原因その1:ローカルとdockerイメージの両者で、bundlerのバージョンが一致していない

ローカルのbundlerは2系(2.0.2)を使っていたのですが、落としてくるイメージのbundlerは1系なのでバージョンの整合性が取れずにエラーが起きてしまう、とのことでした。

なるほど!!!!ということで
その後、Gemfile.lock内のBUNDLERのバージョンを下げ、docker-compose buildしてみたところ、今度は別のエラーが、、、なんでやねーん

以下エラー文です

bash
E: Package 'mysql-client' has no installation candidate
ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update -qq && apt-get install -y build-essential                           libpq-dev   mysql-client  nodejs returned a non-zero code: 100

原因その2:mysql-client は、 mariadb-client に統合されてしまっている

「パッケージ:「mysql-client」 のインストール候補がありません」という意味だと仮定して調べてみたところ同じような記事があったので確認してみます
https://stackoverflow.com/questions/57048428/e-package-mysql-client-has-no-installation-candidate-in-php-fpm-image-build-u

記事によるとどうやら、mysql-client は、 mariadb-client に統合されちゃったみたいですね...

ということで、Dockerfile内のmysql-client を、 mariadb-clientに変更してdocker-compose buildしてみます

...成功しました!!!!!!!!
いやー長かった〜

まとめ

1.dockerイメージを引っ張ってくるときは内容をきちんと確認しましょう
2.2019年9/3現在ではmysql-client は、 mariadb-client に統合されているようです

駄文失礼いたしました

aseanchild1400
備忘録多めです
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away