【发布时间】: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 很陌生,完全被难住了。
【问题讨论】:
-
ENTRYPOINT ["./PracticeDeploy.py"]应该可以工作。 -
尝试将“python”添加到您的入口点。您的 PracticeDeploy.py 不可执行,也没有
#!/usr/bin/env python。 -
其他人使用 CMD 而不是 ENTRYPOINT 在此处成功运行 python 文件:stackoverflow.com/questions/35766638/…。这是一篇关于如何对你的 python 进行 dockerize 的博客,他们也使用 CMD:runnable.com/docker/python/dockerize-your-python-application
标签: python docker dockerfile