ImageMagick が Illegal instruction
ローカルのdockerでは動いていたのに、AWSのコンテナに持っていくと ImageMagick が動かない。
IMEI をDockerfile内でビルドするイメージなのだけど…半年前は問題無かったのになぁ。
調べるとローカルでビルドしているため、CPUに合わせた最適化 -march=native
が問題を起こしている様子。
imei.sh
は /.dockerenv
を見て、 -mtune=generic"
か、 -march=native"
の切り分けを行っているようなんだけど、docker buildだとこの判定が動かないのかな。
RUN touch /.dockerenv
を試しに入れてみたらAWSでも動くビルドになった。
とはいえ、この解法は少しもやもやとするので BUILD_CFLAGS
と BUILD_CXXFLAGS
を ARG で設定する方法にすることに。
こんな感じ。
ARG BUILD_CFLAGS="-O3 -mtune=generic" ARG BUILD_CXXFLAGS="-O3 -mtune=generic" RUN wget 'https://dist.1-2.dev/imei.sh' -qO ./imei.sh && bash ./imei.sh --im-version 7.1.1-18
もっといい方法があればいいけど。