【问题标题】:Set environment var to docker container created in python将环境变量设置为在 python 中创建的 docker 容器
【发布时间】:2021-08-01 13:33:41
【问题描述】:

我正在开发一个应用程序,它使用 docker 映像创建并运行容器。

我使用这个 sn-p 创建客户端:
client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='1.41', timeout=10)
没关系。 我使用以下方法正确实例化并运行图像:
client.containers.run(image=deployment_json['container_image'], command="sbt run", environment=cfg) 环境参数不会导致错误,容器运行正常,但是镜像没有检索到环境变量(NullPointer,它是一个Scala应用) cfg 是这样创建的: cfg = ['var_name', str(env)] 其中 env 是一个 json 对象。

使用 docker lib 版本 5.0.0。
我错过了什么?如何为 docker 镜像提供环境变量?

【问题讨论】:

  • env 包含什么?
  • 这是一个 json... 在 scala 应用程序中,我将此 json 作为字符串检索,然后将其处理...

标签: python docker environment-variables


【解决方案1】:

docker cli 角度来看,您在运行docker run 时有--env , -e 标志来设置环境变量

从文档中我认为这可以使用environment var 来实现:


exec_run(cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user='', detach=False, stream=False, socket=False, environment=None, workdir=None, demux=False)

你应该在哪里将environment 变量作为参数传递

environment (dict or list) – 在容器内设置的环境变量,作为字典或格式为 ["SOMEVARIABLE=xxx"] 的字符串列表。

【讨论】:

  • 正是我所做的,如果你愿意的话。但谢谢你的努力
  • 也许我创建的字典错误,等等
  • 是的,抱歉我错过了,我觉得cfg = ['var_name', str(env)] 看起来不太好,应该更像这样["SOMEVARIABLE=xxx"]
  • 完全正确。当然是我的错.. 我会将您的答案标记为有用,但如果您愿意,我不会将其标记为解决方案
  • 当然,我只是想帮助我,我不是名誉猎手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2017-05-11
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多