Nest js Docker 找不到模块 dist/main

yon*_*lee 1 node.js docker docker-compose nestjs

我正在使用 Docker-compose 构建 Nest.js 应用程序。\n问题是当我尝试“docker-compose up prod”时,它显示“错误:找不到模块 \'/usr/src/app/dist/main”。 \n因此,我探索了产品映像中的文件,但我可以找到 dist 文件夹。另外,我运行 dist/main 并且它有效。但是,我尝试了 docker-compose up prod,它显示了上述错误。\n在此输入图像描述

\n

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

\n

这是我的 DockerFile

\n
\nWORKDIR /usr/src/app\nCOPY package*.json ./\nRUN npm install rimraf\nRUN npm install --only=development\nCOPY . .\n\nRUN npm run build\n\nFROM node:12.19.0-alpine3.9 as production\nARG NODE_ENV=production\nENV NODE_ENV=${NODE_ENV}\nWORKDIR /usr/src/app\nCOPY package*.json ./\nRUN npm install --only=production\nCOPY . .\nCOPY --from=development /usr/src/app/dist ./dist\nCMD ["node", "dist/main"]\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的 docker-compose.yaml

\n
\nservices:\n    proxy:\n        image: nginx:latest # \xec\xb5\x9c\xec\x8b\xa0 \xeb\xb2\x84\xec\xa0\x84\xec\x9d\x98 Nginx \xec\x82\xac\xec\x9a\xa9\n        container_name: proxy # container \xec\x9d\xb4\xeb\xa6\x84\xec\x9d\x80 proxy\n        ports:\n            - \'80:80\' # 80\xeb\xb2\x88 \xed\x8f\xac\xed\x8a\xb8\xeb\xa5\xbc host\xec\x99\x80 container \xeb\xa7\xb5\xed\x95\x91\n        networks:\n            - nestjs-network\n        volumes:\n            - ./proxy/nginx.conf:/etc/nginx/nginx.conf # nginx \xec\x84\xa4\xec\xa0\x95 \xed\x8c\x8c\xec\x9d\xbc volume \xeb\xa7\xb5\xed\x95\x91\n        restart: \'unless-stopped\' # \xeb\x82\xb4\xeb\xb6\x80\xec\x97\x90\xec\x84\x9c \xec\x97\x90\xeb\x9f\xac\xeb\xa1\x9c \xec\x9d\xb8\xed\x95\xb4 container\xea\xb0\x80 \xec\xa3\xbd\xec\x9d\x84 \xea\xb2\xbd\xec\x9a\xb0 restart\n        depends_on: \n            - prod\n    dev:\n        container_name: nestjs_api_dev\n        image: nestjs-api-dev:1.0.0\n        build:\n            context: .\n            target: development\n            dockerfile: ./Dockerfile\n        command: npm run start:dev #node dist/src/main #n\n        ports:\n            - 3001:3000\n        networks:\n            - nestjs-network\n        volumes:\n            - .:/usr/src/app\n            - /usr/src/app/node_modules\n        restart: unless-stopped\n    prod:\n        container_name: nestjs_api_prod\n        image: nestjs-api-prod:1.0.0\n        build:\n            context: .\n            target: production\n            dockerfile: ./Dockerfile\n        command: npm run start:prod\n        # ports:\n        #     - 3000:3000\n        #     - 9229:9229\n        expose:\n            - \'3000\' # \xeb\x8b\xa4\xeb\xa5\xb8 \xec\xbb\xa8\xed\x85\x8c\xec\x9d\xb4\xeb\x84\x88\xec\x97\x90\xea\xb2\x8c 3000\xeb\xb2\x88 \xed\x8f\xac\xed\x8a\xb8 open\n        networks:\n            - nestjs-network\n        volumes:\n            - .:/usr/src/app\n            - /usr/src/app/node_modules\n        restart: unless-stopped\nnetworks:\n    nestjs-network:```\n
Run Code Online (Sandbox Code Playgroud)\n

yon*_*lee 5

好吧...我找到了解决方案。在 docker-compose.yaml 中,应从服务“prod”的卷中删除 .:/usr/src/app。由于本地机器中不存在“dist”文件夹,因此如果挂载当前本地目录,则会显示“未找到”错误。我想我应该更深入地研究音量。