76
44

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-09-04

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 に統合されているようです

駄文失礼いたしました

76
44
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
44