如何使用Dockerfile访问我的下载文件夹?

问题描述 投票:0回答:1

我必须按照Dockerfile来创建一个容器镜像。这对一些脚本来说很好用。

FROM python:3.8-slim-buster

COPY . /work

WORKDIR /work


RUN apt-get update

RUN apt-get upgrade -y

RUN pip install -r requirements.txt

然而,我有一个脚本需要访问我的本地下载文件夹。我的理解是,容器会用Dockerfile所在目录的副本创建一个镜像。然而,我不明白如何让容器访问我的下载文件夹。任何帮助将是巨大的

python docker pycharm dockerfile
1个回答
0
投票

对于挂载或共享的目的,你可以使用docker卷,这是docker的存储机制。你应该把文件从你的主机挂载到容器中。

docker run -v [host directory path]:[container directory path] -it [image name]

这个命令将只是挂载你的主机目录,无论你给容器的访问权是什么


0
投票

您可以将下载文件夹挂载到您的Docker服务上 假设您已经用镜像名称NAMEOFBUILTDOCKER构建了您的服务。

docker run -d \
  --name devtest \
  --mount source=pathto/downloads,target=/work \
  NAMEOFYOURBUILTDOCKER

挂载比 -volume 更加啰嗦,但目的是一样的。这将使你的服务以分离模式(-d)旋转起来,名称为devtest,下载的内容在工作中。


0
投票

有两种方法,你可以采取。

  • 给它作为一个卷(推荐)
  • 改变构建上下文(只是为了更好地理解它)

添加一个卷。

当你建立了你的Dockerfile后,你可以用一个卷来运行它。你可以用一个卷来运行它。把volume看作是你的主机和容器之间的共享文件夹。你可以看看文档 此处.

docker run [OPTIONS] -v /path/to/downloads:/work

它将建立快速和运行快速。但如果你的文件夹改变你的容器也会改变。如果你想坚持你的容器。

改变构建上下文。

当你构建你的图像时,你会给它一个上下文。

docker build -t my-tag .

命令末尾的点代表你运行命令的当前目录。如果你想给你的 /Downloads 文件夹到上下文中,你需要运行如下的构建函数。之后,你可以声明 COPY Downloads/ Downloads/ 在你的Dockerfile中。请记住,Dockerfile中所有使用本地文件系统的路径都是相对于构建上下文的。比如下面的例子,如果你想在Docker文件中执行 COPY . /work 在你的答案中,你需要把它改为 COPY /path/to/your/docker/file/ /work

# Go to your users root directory.
cd ~/

# This will add all of the folders including Downloads to your build context. 
docker run build -t my-tag -f /path/to/your/docker/file/Dockerfile .

请记住,建议尽可能保持你的构建上下文小。当你把所有的文件夹都添加到构建上下文中时,速度会很慢。就像我说的,这只是一个实验。但如果你真的想要一个快速和持久的解决方案,只需将你的下载文件夹和你的Docker文件复制到同一个文件夹中。干杯!


0
投票

我有一个使用docker-compose的解决方案。

docker-compose

version: "3"

services:
  myservice:
    build:
      context: . # DOT (".") means in this root directory, have a dockerfile to build the image
    image: myDownloadAppBuild:latest
    container_name: myDownloadApp
    volumes:
      - <HOST-MACHINE-DIR-PATH>:/app # HOST_MACHINE-DIR-PATH E:/MyDownload AND /app path inside container which points to your download folder. 
    ports:
      - <HOST-PORT-ID>:<CONTAINER-PORT-ID>

docker文件

FROM python:3.8-slim-buster
COPY . /work
WORKDIR /work
VOLUME /app #YOUR DOWNLOAD DIR PATH
RUN apt-get update
RUN apt-get upgrade -y
RUN pip install -r requirements.txt

或者你已经有了一个命令来做这件事。

docker run <OTHER OPTIONS> -v /path/to/downloads:E:/myAppDownloadMount
© www.soinside.com 2019 - 2024. All rights reserved.