【问题标题】:docker run using config-map variablesdocker 使用 config-map 变量运行
【发布时间】:2020-01-09 14:01:42
【问题描述】:

我现在有一个 .bat 文件,它使用

运行 docker 命令
docker run --rm -it --env-file .env --name my-name my-name /bin/sh -c "mvn test -Dtest=my.runner.Runner"

我有一个 k8s config-map.yml 和一个带有 configMapRef 的 deployment.yml 来替换 .env 文件,但我不知道如何在我的 docker run 命令中引用它。

每次我从 docker 注册表部署映像时,它都会获取配置映射并将其用于存储库环境。

【问题讨论】:

  • 为什么要将数据从 configmap 拉到 .env 文件中。只需使用 configmap 中的内容制作所有新的 .env 文件。
  • 我现在想删除 my.env 文件,因为这是为了测试自动化,并且 configmap 可能会在等待环境或需要不同的变量时发生变化。每次我们对代码进行更改时,它也会被部署。
  • docker run 和 Kubernetes 资源并没有真正混合。可能采用您现有的部署 YAML,更新其镜像标签,并将其部署到 Kubernetes 集群是更好的选择。

标签: maven docker kubernetes environment-variables


【解决方案1】:

如果您尝试从在 RUN 语句中(如 RUN export VARI=5 && ...)设置环境变量的值,您将无法在接下来的任何 RUN 语句中访问它。这样做的原因是,对于每个 RUN 语句,都会从中间映像启动一个新容器。图像在命令结束时保存,但环境变量不会以这种方式持续存在。

所以首先你应该在你的镜像中进行更改,构建它,然后在 deployment.yaml 中更改它的引用。在 wole 过程之后,只需执行 configmap 和部署。现在一切都应该正常了。尝试将此过程(docker run)与 Kubernetes 组件结合起来,这不是一个好方法。

有用的文章:docker-arg-env.

整体文档:docker-run

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 2016-06-03
    • 2022-11-03
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多