nest js docker找不到模块dist/main

insrf1ej  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(788)

我正在使用docker compose构建一个nest.js应用程序。问题是,当我尝试“docker compose up prod”时,它显示“错误:找不到模块'/usr/src/app/dist/main”。因此,我在prod的图像中查看了文件,但我可以找到dist文件夹。另外,我运行dist/main,它可以正常工作。但是,我尝试了docker compose up prod,它显示了上述错误。

此外,当我尝试“docker compose up dev”时,它工作得非常好,为主机创建了一个dist文件夹。dev和prod之间的主要区别在于,dev使用的是npm run start:dev命令,而prod使用的是npm run start:prod命令。
这是我的文件

  1. WORKDIR /usr/src/app
  2. COPY package*.json ./
  3. RUN npm install rimraf
  4. RUN npm install --only=development
  5. COPY . .
  6. RUN npm run build
  7. FROM node:12.19.0-alpine3.9 as production
  8. ARG NODE_ENV=production
  9. ENV NODE_ENV=${NODE_ENV}
  10. WORKDIR /usr/src/app
  11. COPY package*.json ./
  12. RUN npm install --only=production
  13. COPY . .
  14. COPY --from=development /usr/src/app/dist ./dist
  15. CMD ["node", "dist/main"]

这是我的docker-compose.yaml

  1. services:
  2. proxy:
  3. image: nginx:latest # 최신 버전의 Nginx 사용
  4. container_name: proxy # container 이름은 proxy
  5. ports:
  6. - '80:80' # 80번 포트를 host와 container 맵핑
  7. networks:
  8. - nestjs-network
  9. volumes:
  10. - ./proxy/nginx.conf:/etc/nginx/nginx.conf # nginx 설정 파일 volume 맵핑
  11. restart: 'unless-stopped' # 내부에서 에러로 인해 container가 죽을 경우 restart
  12. depends_on:
  13. - prod
  14. dev:
  15. container_name: nestjs_api_dev
  16. image: nestjs-api-dev:1.0.0
  17. build:
  18. context: .
  19. target: development
  20. dockerfile: ./Dockerfile
  21. command: npm run start:dev #node dist/src/main #n
  22. ports:
  23. - 3001:3000
  24. networks:
  25. - nestjs-network
  26. volumes:
  27. - .:/usr/src/app
  28. - /usr/src/app/node_modules
  29. restart: unless-stopped
  30. prod:
  31. container_name: nestjs_api_prod
  32. image: nestjs-api-prod:1.0.0
  33. build:
  34. context: .
  35. target: production
  36. dockerfile: ./Dockerfile
  37. command: npm run start:prod
  38. # ports:
  39. # - 3000:3000
  40. # - 9229:9229
  41. expose:
  42. - '3000' # 다른 컨테이너에게 3000번 포트 open
  43. networks:
  44. - nestjs-network
  45. volumes:
  46. - .:/usr/src/app
  47. - /usr/src/app/node_modules
  48. restart: unless-stopped
  49. networks:
  50. nestjs-network:```
xggvc2p6

xggvc2p61#

好啊我找到了解决办法。在docker-compose.yaml上,应将.:/usr/src/app从服务“prod”的卷中删除。因为“dist”文件夹在本地计算机中不存在,如果装载了当前本地目录,则显示未找到错误。我想我应该更深入地研究音量。

相关问题