![](/img/trans.png)
[英]How to handle node_modules with docker-compose in a monorepo project
[英]Docker compose for node project
我正在嘗試更新(欺騙我)一個用 nuxt 構建的節點項目,並為其准備一個 DockerFile 和相應的 docker 組合。
構建運行正常,但是當執行 docker-compose up 時,這是錯誤:
e_nuxt-web-1 | Error: Missing binding /app/node_modules/node-sass/vendor/linux-x64-72/binding.node
e_nuxt-web-1 | Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 12.x
e_nuxt-web-1 |
e_nuxt-web-1 | Found bindings for the following environments:
e_nuxt-web-1 | - OS X 64-bit with Unsupported runtime (102)
e_nuxt-web-1 | - OS X 64-bit with Node.js 12.x
這是 DockerFile:
FROM node:12.18.0
WORKDIR /app
COPY . .
RUN apt-get update || : && apt-get install -y \
python \
build-essential
RUN npm install
RUN npm install typescript
RUN npm rebuild node-sass --force
ENV HOST 0.0.0.0
EXPOSE 3000
CMD [ "npm", "run", "dev" ]
dockercompose.yml
version: "3.4"
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
如您所見,我正在將一些缺失的部分安裝到節點映像(是否有更好的節點項目起始映像?),然后嘗試重建 node-sass,因為這個發現: 節點 Sass 還不支持您當前的環境:Windows 64不支持運行時的位 (88)
但是正如您所看到的錯誤,該綁定是使用“OS X”構建的,其中運行的容器是 Linux。顯然這個重建 --force 沒有達到我的預期,我應該如何強制為正確的操作系統重建庫?
更新 nuxt 是一場噩夢,所以我想為使用 node-sass ^4.14.1(與 node12 一起使用)的那個版本的 nuxt 重新創建預期的運行環境。 在深入研究的同時,我看到了一些關於刪除節點模塊內的 node-sass 文件夾的建議,為什么這會有所作為?
您正在將項目目錄(所有文件都隱藏或不隱藏)安裝到服務容器。
如果您試圖將您的更改實時反映到您的容器,而我懷疑您是否正在根據您的安裝描述尋找它,則此配置基本上是有益的。
您應該省略docker-compose.yml文件中的volumes
鍵:
version: "3.4"
services:
web:
build: .
ports:
- "3000:3000"
您還應該指示docker忽略您的主機node_modules目錄。 將目錄名稱添加到您的dockerignore配置文件中(位於項目目錄的頂部):
# other ignored files
node_modules
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.