簡體   English   中英

Docker 為節點項目撰寫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM