首页 > 解决方案 > 在 docker run 中包含环境变量和捆绑的 javascript

问题描述

我有一个构建https://vuejs.org/应用程序的 Dockerfile,然后在第二阶段将它放在 nginx 负载均衡器后面:

  1 # builds a production image of website
  2 
  3 FROM node:alpine AS builder
  4 
  5 WORKDIR /tmp/build/
  6 COPY . .
  7 
  8 CMD ["npm", "install"]
  9 CMD ["npm", "run", "build"]
 10 
 11 
 12 FROM nginx:1.19.0 AS application
 13 
 14 COPY nginx.conf /etc/nginx/nginx.conf
 15 COPY --from=builder /tmp/build/dist /var/app

我在 Kubernetes 上运行这个 Dockerfile,我想用它来为运行这个镜像的 Pod 提供环境变量。

问题

使用 javascript 构建,环境变量实际上只是在构建期间硬编码到包中(因此,Dockerfile 中的第 9 行)。因为运行这个镜像通常意味着我们已经通过了这一步,我错过了将环境变量放入构建的机会。

问题

如何强制使用 Kubernetes为每个新 Pod 重建整个 Dockerfile,以便我可以将当​​前环境插入到构建中?使用 docker,我可以只使用 --no-cache 标志,但我不确定 Kubernetes 对应的是什么。

标签: dockerkubernetes

解决方案


环境变量实际上只是在构建时硬编码到包中

一个非常常见的 nodejs 问题——react -env是一种方法,应用程序更改为停止询问由 XHR to 填充的解析到(或其他)process.envenv('something')它本身由容器在启动时写出window.__env__/env.js

您可能想在您的问题中添加一个vue.js标记,以了解他们如何解决这个问题,因为它实际上不是 docker 也不是 kubernetes 问题,真的


推荐阅读