![](/img/trans.png)
[英]How can I pass arguments to a docker container with a python entry-point script using command?
[英]Start docker container through an entry point function with arguments
假设我在Docker容器中有一个名为handler.py
的文件(尚未运行或从映像启动)。 让图像名称为testimage
。
在handler.py
里面,我们有一个函数greet
def greet(username):
print("Hello %s!"%(username))
现在,我想从这个图片开始我的搬运工容器,这样我调用此函数greet
里面的文件handler.py
与参数一起。 我想在创建正在运行的容器本身时调用它。
实际上,您在问两件事。 一种如何从命令行调用python文件中的函数。 两个如何通过Docker做到这一点。
首先,在handler.py中,您需要一个主要功能来执行此操作。 例如这样的事情。
import sys
def greet(username):
print("Hello %s!"%(username))
if __name__ == '__main__':
greet(sys.argv[1])
运行它可以得到:
$ python handler.py harshvardhan
Hello harshvardhan!
另一种更复杂的方法是使用OptionParser和基于此的开关。 取决于您的用例,两者都可以。
对于泊坞窗,我想您不想更改入口点,而要更改CMD。 Dockerfile:
FROM python:2.7-alpine
WORKDIR /app
COPY handler.py .
ENTRYPOINT ["/usr/local/bin/python2.7"]
CMD ["/app/handler.py"]
建立影像:
$ docker build . -t local:dev
运行它,覆盖CMD
:
$ docker run local:dev /app/handler.py itismemario
Hello itismemario!
您可以在docker运行期间提供python脚本执行命令,如下所示,
docker run <image> python handler.py --user username_value
。
并确保您已在handler.py中使用argparse处理了args并调用了greet函数。
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('--user', help='username', required=True, type=str)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.