困ったこと…
- Ruby2.5(alpine3.7) の公式DockerイメージをベースにDockerfileを書いて、RailsでCarrierWaveを使いたい
- CarrierWaveが依存しているRMagickは、現状ImageMagick6しか対応していないが、alpine3.7ではImageMagickを
apt add
するとバージョン7が入る -
apt add
するとき、 ImageMagick6にバージョン指定してみても、ないよって怒られる - alpine自体のバージョンを落とせばImageMagick6を入れることはできるが、公式イメージではRubyのバージョンも下がってしまう。
解決!
とりあえず ImageMagick6 のパッケージをググって探してみたら…
http://dl-4.alpinelinux.org/alpine/edge/community/x86_64/
あった!
この子たちを落としてくれば、いけるかもっ!
ということで、Dockerfile内で bundle install
する前に
WORKDIR /tmp
RUN apk add --update --no-cache curl && \
curl -O "http://dl-4.alpinelinux.org/alpine/edge/community/x86_64/imagemagick6-{6.9.9.47-r0,c%2B%2B-6.9.9.47-r0,dev-6.9.9.47-r0,doc-6.9.9.47-r0,libs-6.9.9.47-r0}.apk" && \
apk add --no-cache \
imagemagick6-c%2B%2B-6.9.9.47-r0.apk \
imagemagick6-dev-6.9.9.47-r0.apk \
imagemagick6-libs-6.9.9.47-r0.apk \
imagemagick6-6.9.9.47-r0.apk
…いけた!RMagickもCarrierWaveも使えた!
やっていることは、curlで必要そうなものを落としてきて、 apk add
でファイルからインストールしているだけです。
感想
最新のRubyを軽量なイメージで動かすのって、やっぱり気持ちいい。
あと、RMagickこんなPRも見つけました… マージされないかな…
https://github.com/RMagick/RMagick/pull/299
さいごに
- この記事は自分用メモです。
- 詳しいみなさま、間違いやもっと良い方法がございましたら、やさしく教えて下さい。
- 初Qiita記事!