gpt4 book ai didi

docker - Docker容器在生产服务器上失败

转载 作者:行者123 更新时间:2023-12-02 20:35:06 24 4
gpt4 key购买 nike

我有带有nestjs应用程序的Docker容器。这是我的dockerfile

FROM node:14-alpine

WORKDIR /usr/src/app

COPY . .

RUN npm install

EXPOSE 3001

CMD ["npm", "run", "start:prod"]
这是docker-compose中的部分
backend:
container_name: backend
networks:
- web
- internal
environment:
- DB_PASS=pass
- DB_HOST=database
- DB_USER=postgres
- DB_NAME=postgres
- DB_PORT=5432
- NODE_ENV=production
- VERSION=1.0
build:
context: .
dockerfile: Dockerfile
depends_on:
- database
labels:
- "traefik.enable=true"
- "traefik.port=3001"
- "traefik.docker.network=web"
- "traefik.http.routers.backendo.entrypoints=http,https"
- "traefik.http.routers.backendo.rule=Host(`mydomain.example`)"
- "traefik.http.routers.backendo.tls=true"
- "traefik.http.routers.backendo.tls.certresolver=letsEncrypt"
volumes:
- .:/usr/src/app
当我尝试在生产服务器上运行此容器时,它失败并显示错误
internal/modules/cjs/loader.js:896
throw err;
^

Error: Cannot find module '/usr/src/app/dist/main'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:893:15)
at Function.Module._load (internal/modules/cjs/loader.js:743:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
但是在我的本地计算机上,它可以正常工作。
我想知道为什么相同的docker-compose文件会有不同的结果。 docker 的主要目的不是让我不用担心依赖关系吗?

最佳答案

volumes:使用本地系统中的内容覆盖Dockerfile所做的一切。当您部署它时,生产系统在其主机文件系统中具有不同的内容,因此镜像内容会被不同的内容所覆盖,从而导致结果不一致。
您应该从volumes:文件中删除docker-compose.yml。您也应该在开发系统上执行此操作,以便在执行本地集成测试时使用正在部署的实际镜像。您可以使用本地Node安装进行日常开发。

关于docker - Docker容器在生产服务器上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63861117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com