【发布时间】:2020-11-05 18:35:38
【问题描述】:
我正在尝试自动化构建 docker 映像的过程。我有以下 docker 图像传递命令行参数,在 python 脚本中检索参数。
自动化
#!/bin/bash
docker build -t test . --build-arg split=$split
docker run --rm -it test
Dockerfile
FROM tensorflow/tensorflow:latst-py3
RUN mkdir -p /test/src
ARG split
WORKdir /test/src
COPY . ./
CMD["python", "script.py","$split"]
python 脚本
m1=testing(int(sys.argv[1])
运行 bash 脚本
bash ./automate.sh 5
在运行上述代码时,我正在检索以下错误
ValueErro: invalid literal for int() with base 10; 'split'
非常感谢您的帮助。谢谢
【问题讨论】:
-
这是否回答了您的问题Is Docker ARG allowed within CMD instruction?我对 Docker 比较陌生,但很明显,您将字符串“split”传递给 Python,而不是命令行中的数字字符串,因此显然
$split无法解析为实际参数值,并根据CMD实际预期的链接。 -
$split似乎没有像您预期的那样展开。 -
在您的 Python 脚本中,为什么不简单地打印
sys.argv? -
@barny 不需要,错误信息已经告诉你它是什么:
'split'。 -
是的,但是如果 OP 学会调试,即使只打印导致错误的原因,也许他们会在调试方面做得更好?
标签: python python-3.x docker