docker-compose 'npm install'未安装

1hdlvixo  于 2024-01-06  发布在  Docker
关注(0)|答案(1)|浏览(192)

下面是docker-compose.yml

  1. version: "3.8"
  2. services:
  3. application:
  4. container_name: NodeJS
  5. ports:
  6. - 3000:3000
  7. depends_on:
  8. - mongodb
  9. build:
  10. context: ./application
  11. target: node
  12. restart: unless-stopped
  13. extra_hosts:
  14. - "host.docker.internal:host-gateway"
  15. volumes:
  16. - ./application:/app
  17. ...

字符串
./application/Dockerfile中:

  1. FROM node:alpine AS node
  2. # install dependencies
  3. RUN apk add --no-cache git python3 make gcc g++ libc-dev libpng-dev
  4. RUN apk add --no-cache pixman-dev cairo-dev pango-dev jpeg-dev giflib-dev pkgconfig
  5. RUN npm install -g npm@latest
  6. WORKDIR /app
  7. COPY . .
  8. # Delete node_modules and package-lock.json for a clean install
  9. # RUN rm -rf node_modules
  10. # RUN rm -rf package-lock.json
  11. # RUN npm install -g node-gyp
  12. RUN npm install
  13. EXPOSE 3000
  14. CMD ["npm", "start"]


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

  1. {
  2. "name": "",
  3. "version": "0.0.1",
  4. "private": true,
  5. "scripts": {
  6. "start": "node ./app.js"
  7. },
  8. "dependencies": {
  9. "base-64": "^1.0.0",
  10. "better-sqlite3": "^8.6.0",
  11. "blueimp-md5": "^2.19.0",
  12. "compression": "^1.7.4",
  13. "cookie-parser": "~1.4.4",
  14. "debug": "~2.6.9",
  15. "express": "^4.18.2",
  16. "express-robots-txt": "^1.0.0",
  17. "express-subdomain": "^1.0.5",
  18. "helmet": "^7.0.0",
  19. "highlight.js": "^11.8.0",
  20. "http-errors": "~1.6.3",
  21. "identicon": "^3.1.1",
  22. "identicon.js": "^2.3.3",
  23. "mongoose": "^7.3.0",
  24. "morgan": "~1.9.1",
  25. "path": "^0.12.7",
  26. "pug": "^3.0.2",
  27. "sqlite3": "^5.1.6"
  28. }
  29. }


显然,在我的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:

  1. FROM node:alpine AS node
  2. # install dependencies
  3. RUN apk add --no-cache git python3 make gcc g++ libc-dev libpng-dev
  4. RUN apk add --no-cache pixman-dev cairo-dev pango-dev jpeg-dev giflib-dev pkgconfig
  5. RUN npm install -g npm@latest
  6. WORKDIR /app
  7. COPY . .
  8. # Delete node_modules and package-lock.json for a clean install
  9. RUN rm -rf node_modules
  10. RUN rm -rf package-lock.json
  11. # RUN npm install -g node-gyp
  12. RUN npm install
  13. EXPOSE 3000
  14. CMD ["npm", "start"]

字符串

展开查看全部

相关问题