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
此外,当我尝试“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"]\nRun 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:```\nRun Code Online (Sandbox Code Playgroud)\n
好吧...我找到了解决方案。在 docker-compose.yaml 中,应从服务“prod”的卷中删除 .:/usr/src/app。由于本地机器中不存在“dist”文件夹,因此如果挂载当前本地目录,则会显示“未找到”错误。我想我应该更深入地研究音量。
| 归档时间: |
|
| 查看次数: |
11607 次 |
| 最近记录: |