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