gpt4 book ai didi

node.js - 我是否滥用了 Docker(nodejs 应用程序部署)?

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:32 24 4
gpt4 key购买 nike

Docker 文件(.dockerignore 此处未显示,尽管它存在于同一目录中):

FROM node:8 
WORKDIR /usr/src/myapplication
COPY package*.json ./
RUN npm install
RUN npm ci --only=production
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]

...其中 npm start 运行 tslint 来修复代码问题,运行 tsc 来编译 TypeScript 源代码,最后在编译后的 index.js 文件上运行 node 来启动 express 服务器。相当标准的配置,但运行良好。

但感觉我误用了 Docker:为什么我要移动尚未编译的代码并稍后编译,而我可以提前编译它?更重要的是,我必须保留:

  "dependencies": {
"express": "^4.16.4",
"typescript": "^3.4.5",
"@types/express": "^4.16.1",
"@types/node": "^11.13.8",
"tslint": "^5.16.0"
}

...这些依赖项同时作为 devDependencisesdependency 并且编译器会警告我。

我不是 Docker 人,根本不是,那么有更好的方法吗?

最佳答案

确实有更好的方法! Docker 现在具有一种称为“多阶段镜像”的功能。借助此功能,您现在可以将整个项目复制到 Docker 构建上下文中,构建项目,然后“重置”容器镜像以构建“准备运行”生产 Docker 镜像。

这有很多优点:

  1. 可以配置构建环境以匹配执行环境……或者根本没有。很多时候,也是一种动力功能,许多项目需要大量依赖项来构建。但在生产环境中,几乎不需要运行。
  2. 减少部署的 docker 镜像。不需要拥有所有这些开发依赖项部署的镜像。
  3. 删除了“RUN install package A”和“RUN”的 Dockerfile 中的复杂性申请完成后,卸载 A' 包。

这里是开始使用多阶段图像的最佳位置:https://docs.docker.com/develop/develop-images/multistage-build/

希望这有帮助!让我知道结果如何。

关于node.js - 我是否滥用了 Docker(nodejs 应用程序部署)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55934852/

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