2015/2/2
入門docker - ローカルでビルドしたバイナリが入らないように注意しよう
本日の私の生産性を著しく低下させた件について共有させていただきます。
とあるフロントエンドアプリケーションを動作させるためのDockerコンテナを作っていたのですが、Dockerfileをこんな感じにしていたんです。
FROM dockerfile/nodejs-bower-grunt
...
ADD package.json /app/
RUN npm install
ADD bower.json /app/
RUN bower install --allow-root
ADD . /app/
...
ちょっとこみいった事情があったのでonbuildではないのですが、手元の環境でbuildしたイメージを実行しようとしても grunt imagemin:dist
でエラーになってしまう。しかし、リモート(具体的には mookjp/pool の中)だとその部分は動いている。(その先が動かなかったのでデバッグしたかった)
エラーメッセージでググっても npm cache clean
しろとか、apt-get で入れてる optipng を消せとか言うので docker run -i -t {imagename} /bin/bash
していろいろやっていたら、./node_moduels
内にある optipng
の実行ファイルが壊れており、ADD . /app/
で node_modules
がローカルのものに上書かれていることにようやく気付いたのでした…
手元で node_modules
を消してbuildしたら無事動くものができあがったのでした。つらい。
みなさんもローカルで docker build
するときはバイナリが入らないように注意しましょう…
created_at: 2015-08-06 01:43:33 +0900
updated_at: 2020-03-22 11:02:25 +0900