gpt4 book ai didi

python - 将本地目录挂载到Docker Container中

转载 作者:行者123 更新时间:2023-12-02 20:48:56 25 4
gpt4 key购买 nike

我想将Docker用于我使用Python进行一些数据处理的项目。假设我的代码在一个名为code的目录中(由多个python文件组成,用于不同的分析步骤),而我的数据在一个目录data中。一种解决方案是添加如下代码和数据:

# Dockerfile
FROM debian:stable-slim
RUN apt-get update && apt-get install -y python-pip
ADD code /code
ADD data /data
WORKDIR /code
CMD python

然后,我可以使用 docker run -i someName pythonFile1.py运行 code中的文件之一。但是我这里遇到的问题是,每次更改代码或数据时,我都需要重新运行 docker build .

因此,我尝试使用 docker-compose将这两个目录包括在卷中:
#docker-compose.yml
version: '2'
services:
myProject:
build: .
volumes:
- ./code:/code
- ./data:/data
# Dockerfile
FROM debian:stable-slim
RUN apt-get update && apt-get install -y python-pip
WORKDIR /code
CMD python

现在,我可以运行 docker-compose build来构建它,然后我以为我可以做 docker-compose run myProject pythonFile1.py,但是随后出现以下错误:
ERROR: Cannot start service tools: oci runtime error: container_linux.go:262: starting container process caused "exec: \"pythonFile1.py\": executable file not found in $PATH"

我究竟做错了什么? docker-compose甚至是可行的方式吗(或者我也可以仅使用普通的Dockerfile来实现我想要的功能)?

最佳答案

这是docker-compose运行文档

run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

pythonFile1.py被解释为命令,因此在运行时,docker尝试在不存在的容器内执行pythonFile1.py命令。

在您的情况下,不需要docker-compose。您可以使用以下命令
docker run -i someName -v /absolutePath/code:/code -v /absolute/data:/data pythonFile1.py

注意主机上的路径必须是绝对路径
https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume

关于python - 将本地目录挂载到Docker Container中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45440209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com