ノードアプリケーションをドッキングしようとしています。私の現在のアプリケーションは、postgresqlを備えたnodejs expressサーバです。 ExpressJSは、ノード・サスミド・ミドルウェアを使用して、Sassアセットを処理します。 OSXマシンでnodeとpostgresqlをローカルに実行すると、すべて正常に動作します。私はdocker-compose
でアプリケーションを実行しようとすると、私は「行方不明バインディングエラー」を取得node-sassとDockerの問題
ここに私のDockerfileです:私はドッキングウィンドウを実行すると
version: '2'
services:
db:
image: postgres:9.6.1
ports:
- '5432:5432'
web:
build: . # use the Dockerfile next to this file
volumes:
- .:/my_app
ports:
- "3000:3000"
depends_on:
- db
:ここ
FROM node:7.2.1
RUN apt-get update -qq && apt-get install -y build-essential
RUN apt-get install -y libpq-dev postgresql-client
ENV APP_HOME /my_app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
ADD package.json .
RUN npm install
RUN npm rebuild node-sass
ADD . .
CMD [ "npm", "start" ]
EXPOSE 3000
は私docker-compose.yml
ファイルです次のエラーが表示されます。
web_1 | [nodemon] 1.11.0
web_1 | [nodemon] to restart at any time, enter `rs`
web_1 | [nodemon] watching: *.*
web_1 | [nodemon] starting `node ./bin/www`
web_1 | /my_app/node_modules/node-sass/lib/binding.js:15
web_1 | throw new Error(errors.missingBinary());
web_1 | ^
web_1 |
web_1 | Error: Missing binding /my_app/node_modules/node-sass/vendor/linux-x64-51/binding.node
web_1 | Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 7.x
web_1 |
web_1 | Found bindings for the following environments:
web_1 | - OS X 64-bit with Node.js 7.x
web_1 |
web_1 | This usually happens because your environment has changed since running `npm install`.
web_1 | Run `npm rebuild node-sass` to build the binding for your current environment.
web_1 | at module.exports (/my_app/node_modules/node-sass/lib/binding.js:15:13)
web_1 | at Object.<anonymous> (/my_app/node_modules/node-sass/lib/index.js:14:35)
web_1 | at Module._compile (module.js:571:32)
web_1 | at Object.Module._extensions..js (module.js:580:10)
web_1 | at Module.load (module.js:488:32)
web_1 | at tryModuleLoad (module.js:447:12)
web_1 | at Function.Module._load (module.js:439:3)
web_1 | at Module.require (module.js:498:17)
web_1 | at require (internal/module.js:20:19)
web_1 | at Object.<anonymous> (/my_app/node_modules/node-sass-middleware/middleware.js:3:12)
web_1 | at Module._compile (module.js:571:32)
web_1 | at Object.Module._extensions..js (module.js:580:10)
web_1 | at Module.load (module.js:488:32)
web_1 | at tryModuleLoad (module.js:447:12)
web_1 | at Function.Module._load (module.js:439:3)
web_1 | at Module.require (module.js:498:17)
web_1 | [nodemon] app crashed - waiting for file changes before starting...
DockerfileにRUN npm rebuild node-sass
を追加することで、ドッキング・コンテナ内のOS用の正しいバインディングが構築されます...しかし、動作していないようです。
どのような考えですか?
インストールしようとしているnode-sass-middleware/node-sassのバージョンは次のとおりです。ノード7のサポートは準最近追加されました – nschonni
@nschonni私はnode-sass-middlewareバージョン0.9.8を使用しています – jubeless