簡體   English   中英

通過帶有參數的入口點函數啟動Docker容器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM