在 docker 运行时更新 wso2 deployment.toml 配置

update wso2 deployment.toml configuration at the docker runtime

我是 docker 的新手。 我可以使用 dockerfile 创建图像并成功调用 WSO2-API

我在 deployment.toml 文件中进行了硬编码配置 我想在 docker 运行时针对不同的环境更新此信息 - DEV、QA 等

deployment.toml文件内容-

[server]
offset = 22

如何在运行时更新 .toml 文件配置?

https://ei.docs.wso2.com/en/7.2.0/micro-integrator/setup/dynamic_server_configurations/#environment-variables

这里说你可以点赞-

offset = "${VariableName}"

但是我在我的 docker 文件中提到了什么来在运行时更新这些变量?

在 Dockerfile 中使用 ARG 选项定义变量。 示例:

A​​RG 变量名

现在可以在运行时给出值,如下所示。

docker build --build-arg VariableName=0 .

关于如何在docker文件中使用ARG的详细信息,请参考https://docs.docker.com/engine/reference/builder/#arg

I want to update this information at the docker runtime for different env - DEV,QA etc

有多种方法可以实现这一点,这里至少有两种我们在部署中常用的方法

为配置文件使用模板

基本上,想法是将 deployment.toml(或其他配置文件/文件夹)挂载为 Kubernetes 中的 configmap 值或纯 docker 中的卷。

对于每个环境,您可以使用任何部署工具(Maven、Puppet、Ansible、任何云 devops 等)来模板化配置。这种方法允许您在不需要新图像的情况下更新配置模板。

在入口点模板化配置

创建一个入口点脚本,它根据环境变量对配置进行模板化 - e。 G。使用 sed 实用程序),然后启动应用程序。然后在 Dockerfile

中使用该入口点

此方法不需要外部配置(卷、模板),但如果需要更新模板,则需要新图像。

编辑:

我之前没有看到在问题中提到的 deployment.toml 中使用 env 变量,这一定是 wso2 的新东西。但如果支持,那么只需在 pod 中指定 env 变量就可以让你的生活更轻松。 (哦,这是你可能错过的)

  • 在Dockerfile中指定ENV值为默认值
  • 运行 docker 与您定义的值(-e 纯 docker 参数或在撰写或部署配置中定义的环境)