Docker経由でのみAdminLTEのコンパイルが失敗する。
docker-compose run web bin/webpack
や
docker-compose run web bin/webpack-dev-server
ができない。
具体的にはこんなエラーになる。
[4/4] Building fresh packages...
[1/4] ⠄ core-js
[2/4] ⠄ node-sass
[4/4] ⠄ admin-lte
error /myapp/node_modules/admin-lte: Command failed.
Exit code: 127
Command: npm run plugins
Arguments:
Directory: /myapp/node_modules/admin-lte
エラーログをもうちょい追ってみるとこんなエラーが出ていた。
ERROR in ./app/javascript/stylesheets/admin/application.scss (./node_modules/css-loader/dist/cjs.js??ref--4-1!./node_modules/postcss-loader/src??ref--4-2!./node_modules/sass-loader/dist/cjs.js??ref--4-3!./app/javascript/stylesheets/admin/application.scss)
webpacker_1 | Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
webpacker_1 | Error: Missing binding /myapp/node_modules/node-sass/vendor/linux-x64-64/binding.node
webpacker_1 | Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 10.x
webpacker_1 |
webpacker_1 | Found bindings for the following environments:
webpacker_1 | - Linux 64-bit with Node.js 10.x
nodeが10系になってる。期待してたのは12系だ。ローカルではコンパイルが通ってたけどdockerでは通らなかったのはこれが濃厚。
Dockerfileにこいつを追記したら解決した。
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \