将python脚本放入docker contain

2024-10-01 11:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个现有的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:

^{pr2}$

我是这样建造的:

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.

我应该只在运行时插入参数吗?我正确地处理这个问题吗?我对多克很陌生,完全被难住了。在


Tags: 文件csvdocker代码namepyimportdockerfile
1条回答
网友
1楼 · 发布于 2024-10-01 11:28:08

CMD解决方案

我建议从Entrypoint切换到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

入口点解决方案

^{pr2}$

下面将对这种解决方案进行深入解释:

https://lostechies.com/gabrielschenker/2016/08/21/container-entrypoint/

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

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

入口点命令不会从命令行覆盖。在

CMDENTRYPOINT相似的,但我更喜欢命令,因为它允许我在运行时更改标志或命令,同时保留相同的dockerfile,如果需要,可以不使用命令运行。在

这里有一个关于区别的较长形式的讨论:http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/

相关问题 更多 >