首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将命令行参数传递给我停靠的python应用程序

如何将命令行参数传递给我停靠的python应用程序
EN

Stack Overflow用户
提问于 2018-07-18 21:05:09
回答 1查看 537关注 0票数 1

我有一个简单的docker文件,我用它来容器化我的python应用程序。该应用程序实际上将文件路径作为命令行参数。这是我第一次使用Docker,我想知道如何才能做到这一点:

FROM python:3.6-slim

COPY . /app
WORKDIR /app

RUN apt-get update && apt-get -y install gcc g++
# Install numpy, pandas, scipy and scikit
RUN pip install --upgrade pip

RUN pip --no-cache-dir install -r requirements.txt
RUN python setup.py install

ENTRYPOINT python -m myapp.testapp

请注意,python应用程序是从带有-m标志的模块运行的。

这可以很好地构建图像。我也可以使用以下命令运行它:

docker run -ti myimg

但是,我不能向它传递任何命令行参数。例如,我的应用程序使用-h选项打印一些帮助选项。

但是,以以下身份运行docker:

docker run -ti myimg -h

不做任何事情。因此,命令行选项没有被传递。

另外,我想知道从主机到docker传递文件句柄的最好方法是什么。因此,例如,应用程序将文件的路径作为输入,该文件通常驻留在主机上。有没有办法让我的容器化应用程序能够访问它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 04:01:32

您必须将CMD指令与ENTRYPOINT(以exec形式)一起使用

ENTRYPOINT ["python", "-m", "myapp.testapp"]
CMD [""]

确保您传递给CMD的任何默认值(上面代码片段中的"")都会被您的主命令忽略

当你这么做的时候docker run -ti myimg

该命令将以python -m myapp.testapp ''用户身份执行

当你这么做的时候docker run -ti mying -h

该命令将以python -m myapp.testapp -h用户身份执行

注意:

exec表单:ENTRYPOINT ["command", "parameter1", "parameter2"]

外壳形式:ENTRYPOINT command parameter1 parameter2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51402788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档