为了账号安全,请及时绑定邮箱和手机立即绑定

在 Docker 容器中传递 python 参数(argparse)

在 Docker 容器中传递 python 参数(argparse)

倚天杖 2022-06-02 17:58:17
我有一个使用以下命令运行的 python 脚本: python3 scan.py --api_token 5563ff177863e97a70a45dd4 --base_api_url http://101.102.34.66:4242/scanjob/ --base_report_url http://101.102.33.66:4242/ --job_id 42 当我在命令行上运行它时,它可以完美运行在我的 Dockerfile 中,我尝试了 ARG 和 ENV 。似乎没有一个工作#ARG api_token#ARG username#ARG password# Configure AWS arguments#RUN aws configure set aws_access_key_id $AWS_KEY \ #   && aws configure set aws_secret_access_key $AWS_SECRET_KEY \  #  && aws configure set default.region $AWS_REGION### copy bash script and change permissionRUN mkdir workspaceCOPY scan-api.sh /workspaceRUN chmod +x  /workspace/scan-api.pyCMD ["/python3", "/workspace/scan-api.py"]那么如何在 docker 文件中定义这个标记的参数呢?运行图像时运行的命令是什么?
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您可以通过两种方式执行此操作,因为您希望在运行时覆盖。

  • 作为 Docker 运行命令的参数

  • 作为 Docker 运行命令的 ENV

第一个是最简单的,你不需要改变任何东西 Dockerfile

docker run --rm my_image python3 /workspace/scan-api.py --bar tet --api_token 5563ff177863e97a70a45dd4 --base_api_url http://101.102.34.66:4242/scanjob/ --base_report_url http://101.102.33.66:4242/ --job_id

和我的简单脚本

import sys
print  ("All ARGs",sys.argv[1:])

//img1.sycdn.imooc.com//629889da0001efe518040083.jpg

使用 ENV,您需要更改 Dockerfile


我正在发布一种方式,您可以为所有 args 执行此操作


FROM python:3.7-alpine3.9 

ENV API_TOKEN=default_token

CMD ["sh", "-c", "python /workspace/scan-api.py $API_TOKEN"]

因此,您可以在运行时覆盖它们,或者能够使用一些默认值运行。


docker run -it --rm -e API_TOKEN=new_token my_image


查看完整回答
反对 回复 2022-06-02
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

CMD采用与您在命令行中使用的参数完全相同的参数。

CMD ["/python3", "scan.py", "--api_token", "5563ff177863e97a70a45dd4", "--base_api_url", "http://101.102.34.66:4242/scanjob/", "--base_report_url", "http://101.102.33.66:4242/", "--job_id", "42"]



查看完整回答
反对 回复 2022-06-02
?
偶然的你

TA贡献1841条经验 获得超3个赞

这很令人困惑。

您将需要使用(or ) 的SHELL形式才能进行环境变量替换,例如ENTRYPOINTCMD

ENTRYPOINT "/python3","/workspace/scan-api.py","--api-token=${TOKEN}" ...

然后使用以下形式运行容器:

docker run --interactive --tty --env=TOKEN=${TOKEN} ...


查看完整回答
反对 回复 2022-06-02
  • 3 回答
  • 0 关注
  • 583 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信