通过带参数的入口点函数启动docker容器

2024-04-25 04:14:27 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在docker容器中有一个名为handler.py的文件(该容器尚未运行或从映像开始)。让图像名为testimage。在

handler.py中,我们有一个函数greet,这样

def greet(username):
    print("Hello %s!"%(username))

现在我想从这个图像启动docker容器,这样我就可以在文件handler.py中调用这个函数greet,同时调用一个参数。我想在创建一个正在运行的容器时调用它。在


Tags: 文件函数dockerpy图像hello参数def
2条回答

您可以在docker运行期间提供python脚本执行命令,如下所示:

docker run <image> python handler.py user username_value。在

并确保在中使用argparse处理了这些参数处理程序.py打你的问候电话。在

import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument(' user', help='username', required=True, type=str)

实际上你问了两件事。如何从命令行调用python文件中的函数。两个如何通过Docker做到这一点。在

第一次,在处理程序.py你需要一个主函数才能做到这一点。像这样的东西。在

import sys


def greet(username):
    print("Hello %s!"%(username))

if __name__ == '__main__':
    greet(sys.argv[1])

运行它可以:

^{pr2}$

另一种更复杂的方法是使用OptionParser和基于它的开关。 根据您的用例,这两种方法都可以。在

对于docker,我想您不想更改入口点,而是要更改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!

相关问题 更多 >