gpt4 book ai didi

node.js - Dockerfile如何使dev和prod之间的启动命令不同?

转载 作者:行者123 更新时间:2023-12-04 17:11:09 25 4
gpt4 key购买 nike

我有一个 TypeScript Node 应用程序。我有一个开发人员并启动 npm scritps:

"dev": "ts-node-dev src/index.ts",
"build": "npm run test:ci && tsc",
"start": "node dist/index"

在开发时,我观察 .ts 文件的变化,在生产环境中运行时,我想从 dist 目录(使用 npm 构建脚本生成)运行 .js 文件。

这是我的 Dockerfile:

FROM node:14

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm i --only=prod

COPY . .

CMD ["npm", "run", "dev"]

当它在开发环境中运行时它很好,但在生产环境中 CMD 命令应该是这样的:

CMD ["npm", "start"]

RUN npm i --only-prod 命令也需要分别更改。

如何使其适应开发与生产?

最佳答案

在 kubernetes 中你可以覆盖默认命令 args:

apiVersion: apps/v1
kind: Deployment
[...]
spec:
template:
spec:
containers:
- name: CONTAINER-NAME
image: IMAGE-NAME
args: [
"npm",
"start" ]

参见 kubernetes documentation .

具体实现取决于您使用的部署系统:

  • 您可以编写两个不同的.yaml文件,一个用于开发环境,一个用于生产环境。
  • 如果您使用 helm 进行部署,则可以在每个环境的值文件中设置此配置。
  • 您还可以按照 this example 中的说明使用 Kustomize .

关于node.js - Dockerfile如何使dev和prod之间的启动命令不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69425190/

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