docker OCI运行时创建失败:runc创建失败:无法启动容器进程:执行:“split_csv.py”:在$PATH中找不到可执行文件:未知的

z9ju0rcb  于 2022-11-22  发布在  Docker
关注(0)|答案(1)|浏览(143)

我的停靠文件

FROM python:latest

#ENTRYPOINT [ "python split_csv.py -i test_data.csv -o test_data.csv -r 100" ]

WORKDIR /docker_task2

ENV PORT 80

COPY split_csv.py ./docker_task2

ADD test_data.csv ./docker_task2

COPY . /docker_task2//

CMD ["python", "split_csv.py", "test_data.csv"]

我的代码

docker run splitter split_csv.py -i test_data.csv -o test_data.csv -r 100
r7xajy2e

r7xajy2e1#

启动容器时

docker run splitter \
  split_csv.py -i test_data.csv -o test_data.csv -r 100

它尝试在$PATH环境变量中查找命令split_csv.py,遵循正常的Unix规则。您已经将脚本复制到了映像中的/docker_task2目录中,该目录也是当前目录,您需要显式指定路径,因为该目录不是默认的$PATH位置(如/usr/bin)之一。

docker run splitter \
  ./split_csv.py ...

这也受其他正常Unix规则的约束:该脚本必须是可执行(如果不是,则在您的主机系统上运行chmod +x split_csv.py,并将权限更改提交给源代码管理),且它必须以“shebang”行#!/usr/bin/env python3作为文件的第一行。
解决了这个问题之后,你也不需要在你的映像的CMD中重复python解释器了。

FROM python:latest
WORKDIR /docker_task2

# Install Python library dependencies first; saves time on rebuild
# COPY requirements.txt ./
# RUN pip install -r requirements.txt

# Copy the entire context directory ./ to the current directory ./
COPY ./ ./

# Set defaults to run the image
ENV PORT 80
CMD ["./split_csv.py", "-i", "test_data.csv"]

相关问题