我尝试将用户输入作为Dockerfile的构建参数,并尝试将其传递给python程序。以下是我的用例:
Dockerfile :
FROM centos:7
USER root
RUN yum install -y python36-devel python36-pip
ARG number
COPY . /app
RUN ls -l /app
RUN echo ${number}. <=================This displays output in Docker build console
CMD python3 /app/app.py -t ${number}
app.py
import argparse
import time
def input():
parser = argparse.ArgumentParser()
parser.add_argument('number', help='take program number as input')
args = parser.parse_args()
return args
def root(args):
for i in range(10):
print("Hello World from : " + str(args.number))
time.sleep(2)
if __name__ == "__main__":
args = input()
root(args)
Docker生成命令:
Docker运行命令:
错误:
用法:app.py[-h]编号
app.py:错误:需要以下参数:number
误读,ENV和ARG参数,可以使用运行时参数解决:
Docker运行命令:
$docker run-it passarg:1
生成完成后,生成参数将超出范围。因此,当命令运行时(当您尝试启动容器时),参数没有值。而是使用一个保持其值的环境变量。 如果仍要使用生成参数,可以执行以下操作:
相关问题 更多 >
编程相关推荐