我有一个简单的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的最佳方法是什么。因此,例如,应用程序将文件路径作为输入,并且该文件通常位于主机上。我的容器化应用程序可以访问该方法吗?
答案 0 :(得分:1)
您必须同时使用x_
指令和CMD
(以exec格式)
ENTRYPOINT
确保要传递给CMD的任何默认值(以上代码段中的ENTRYPOINT ["python", "-m", "myapp.testapp"]
CMD [""]
)都可以被您的主命令忽略
操作完成后,""
,
该命令将以docker run -ti myimg
操作完成后,python -m myapp.testapp ''
,
该命令将以docker run -ti mying -h
注意:
执行表格:python -m myapp.testapp -h
外壳形式:ENTRYPOINT ["command", "parameter1", "parameter2"]