将参数传递给 Docker 容器中的 Python argparse

新手上路,请多包涵

我正在着手第一次尝试使用 docker 容器。我有一个调用几个 API 并解析文件的 python 脚本。该脚本为 API 的服务器 URL、API 密钥和要解析的文件的文件路径获取参数。我使用 argparse 在脚本中处理这些。

我如何将这些传递到 Docker 中?我不想硬编码任何东西,因为我希望将此脚本交给需要定期运行并根据结果采取行动的工程师。

谢谢你的帮助。我一直在搜索,但似乎建议将内容硬编码到 dockerfile 中 - 我希望用户能够在运行时将它们放入。或者也许我已经找到了答案,只是不明白……

如果我的术语不正确,我深表歉意——这是我第一次尝试使用 Docker。

原文由 Bring Coffee Bring Beer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 727
1 个回答

您执行此操作的方式取决于您使用 docker 的方式。如果要在已经运行的容器中运行脚本,可以使用 exec:

 docker exec <yourContainerName> python <yourScript> <args>

或者,如果您有一个 docker 映像,其中您的脚本是 ENTRYPOINT,则您传递给 docker run 命令的任何参数都将添加到入口点。

因此,如果您的 docker 文件如下所示:

 FROM yourbase
....
ENTRYPOINT <yourScript>

然后你可以通过运行容器本身来运行脚本:

 docker run --rm <yourImageName> <args>

根据您在下面的评论,您似乎需要此选项。您应该更改 dockerfile 以指定

ENTRYPOINT ["python","./script.py"]

(而不是使用 CMD),然后您可以通过以下方式运行:

 docker run --rm <yourImageName>  -a API_KEY - f FILENAME -o ORG_ID

原文由 Chris 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题