Существует проблема с монтированием тома с исходным кодом моего углового приложения в работающем контейнере Docker.
Моя операционная система - Win 10 64 бит.
Это мой Dockerfile, который находится в корневой папке приложения.
# base image
FROM node:10
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install -g @angular/cli@1.7.1
RUN npm install node-sass@latest
RUN npm rebuild node-sass
# add app
COPY . /usr/src/app
# start app
CMD ng serve --host 0.0.0.0
Строки по установке и перестройке Node-sass - это попытки решить проблему, возможно, они должны быть здесь.
Итак, я начинаю строить докер-контейнер
docker build -t my-cool-app .
Затем выполняется: я хочу смонтировать исходный код с моего хост-компьютера в контейнер:
docker run -it -v ${PWD}:/usr/src/app -v ${PWD}/node_modules -p 4200:4200 my-cool-app
Приложение запускает компиляцию, и я получаю ошибку.
Сборка модуля не удалась (из ./node_modules/sass-loader/lib/loader.js):
Ошибка: отсутствует привязка
/usr/src/app/node_modules/node-sass/vendor/linux-x64-64/binding.node
Узлу Sass не удалось найти привязку для вашей текущей среды: Linux
64-битный с Node.js 10.x
Найдены привязки для следующих сред:
- Windows 64-bit с Node.js 10.x
Я понимаю проблему: node-sass собирается на хосте Windows в виде двоичного кода, и в Linux нет привязки для запуска. Ребята отсюда https://github.com/sass/node-sass/issues/2165 сказали - эй, переустановите node-sass после установки - я добавил такие команды в файл Docker, но все равно не получилось.