【问题标题】:Putting a python script into a docker container将 python 脚本放入 docker 容器中
【发布时间】:2018-11-30 16:15:14
【问题描述】:

我正在尝试将现有的 python 函数放入 docker 容器中。 python 代码将 CSV 文件(与 dockerfile 位于同一目录中)作为输入数据并进行一些计算。 py文件长这样,命名为“PracticeDeploy.py”:

import pandas as pd
import pickle
from OptimizationFunction import main_barrel

# Read in model
gbrModel = pickle.load(open('/src/ValDiffGBR.pkl', 'rb'))
file_name = str(input())
data=pd.read_csv('/src/'+file_name)
new_data = data.dropna(how='any')
preds = main_barrel(gbrModel, new_data)

在我的 docker 目录中,我已经有一个子文件夹,其中包含我的第一个 dockerfile 并安装了所有库。同样在我的目录中,我有 py 文件、CSV 和我在上述 py 文件中导入的模型。我现在正在尝试构建另一个 dockerfile,它将 CSV 名称作为输入,然后运行 ​​python 代码。

这里是 dockerfile:

FROM [my repository] as builder
ARG DATA_FILE

RUN mkdir src
WORKDIR /src
COPY . /src

ENTRYPOINT ["PracticeDeploy.py"]

我是这样构建的:

sudo docker build --rm -f Dockerfile -t "first_docker" --build-arg DATA_FILE='/src/[csv_name].csv' .

我尝试这样运行:

sudo docker run --rm first_docker

但是我得到了这个错误:

docker: Error response from daemon: OCI runtime create 
failed: container_linux.go:348: starting container process 
caused "exec: \"PracticeDeploy.py\": executable file not 
found in $PATH": unknown.

我应该只在运行时插入参数吗?我正确地接近这个吗?我对 docker 很陌生,完全被难住了。

【问题讨论】:

标签: python docker dockerfile


【解决方案1】:

CMD 解决方案

我建议从入口点切换到 CMD

CMD [ "python", "./my_script.py" ]

这个方法可以在这里深入了解:https://runnable.com/docker/python/dockerize-your-python-application

更多复杂性(标志等)也可以使用 CMD 处理,如下所示:how to pass command line arguments to a python script running in docker

入口点解决方案

ENTRYPOINT ["python", "app.py"]

这里深入解释了这种解决方案: https://lostechies.com/gabrielschenker/2016/08/21/container-entrypoint/

两者的区别(如果你好奇不知道)

CMD 命令可以从命令行覆盖。 CMD 实际上是容器命令的默认值。

ENTRYPOINT 命令不会从命令行覆盖。

CMDENTRYPOINT 相似,但我更喜欢命令,因为如果愿意,它使我能够在运行时更改标志或命令,同时保持相同的 dockerfile 可以如果需要,可以在没有命令的情况下运行。

以下是对差异的详细讨论: http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/

【讨论】:

    猜你喜欢
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2016-01-01
    相关资源
    最近更新 更多