docker-compose 'npm install'未安装

1hdlvixo  于 5个月前  发布在  Docker
关注(0)|答案(1)|浏览(77)

下面是docker-compose.yml

version: "3.8"

services:
  application:
    container_name: NodeJS
    ports:
      - 3000:3000
    depends_on:
      - mongodb
    build:
      context: ./application
      target: node
    restart: unless-stopped
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - ./application:/app
  ...

字符串
./application/Dockerfile中:

FROM node:alpine AS node

# install dependencies
RUN apk add --no-cache git python3 make gcc g++ libc-dev libpng-dev
RUN apk add --no-cache pixman-dev cairo-dev pango-dev jpeg-dev giflib-dev pkgconfig
RUN npm install -g npm@latest

WORKDIR /app
COPY . .

# Delete node_modules and package-lock.json for a clean install
# RUN rm -rf node_modules
# RUN rm -rf package-lock.json

# RUN npm install -g node-gyp
RUN npm install

EXPOSE 3000
CMD ["npm", "start"]


最后,我的./application/package.json

{
  "name": "",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node ./app.js"
  },
  "dependencies": {
    "base-64": "^1.0.0",
    "better-sqlite3": "^8.6.0",
    "blueimp-md5": "^2.19.0",
    "compression": "^1.7.4",
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "^4.18.2",
    "express-robots-txt": "^1.0.0",
    "express-subdomain": "^1.0.5",
    "helmet": "^7.0.0",
    "highlight.js": "^11.8.0",
    "http-errors": "~1.6.3",
    "identicon": "^3.1.1",
    "identicon.js": "^2.3.3",
    "mongoose": "^7.3.0",
    "morgan": "~1.9.1",
    "path": "^0.12.7",
    "pug": "^3.0.2",
    "sqlite3": "^5.1.6"
  }
}


显然,在我的Dockerfile中,我运行了“npm install”。然而,我的npm start(简单地说是node ./app.js)只是给了我一个“错误:找不到模块'express'”。该项目是一个JavaScript项目。如果我们引用package.jsonemail protected(https://stackoverflow.com/cdn-cgi/l/email-protection)应该正在安装。
有什么想法吗?

jchrr9hc

jchrr9hc1#

COPY . .命令将所有文件从当前目录(包括node_modules目录,如果存在的话)复制到Docker镜像中,然后您正在运行npm install,由于与现有node_modules目录冲突,可能无法正确安装依赖项。

您可以在运行npm install之前删除node_modules文件夹,以确保您的依赖项正确安装在Docker镜像中。
更新Dockerfile:

FROM node:alpine AS node

# install dependencies
RUN apk add --no-cache git python3 make gcc g++ libc-dev libpng-dev
RUN apk add --no-cache pixman-dev cairo-dev pango-dev jpeg-dev giflib-dev pkgconfig
RUN npm install -g npm@latest

WORKDIR /app
COPY . .

# Delete node_modules and package-lock.json for a clean install
RUN rm -rf node_modules
RUN rm -rf package-lock.json

# RUN npm install -g node-gyp
RUN npm install

EXPOSE 3000
CMD ["npm", "start"]

字符串

相关问题