gpt4 book ai didi

docker - 如何将文件路径传递到Docker文件中

转载 作者:行者123 更新时间:2023-12-02 21:09:18 25 4
gpt4 key购买 nike

我正在尝试构建一个简单的容器,该容器将允许用户将目录文件路径传递到主机上应存在的可执行文件。

我想要这种灵活的方式,如果用户未指定目录文件路径,它将使用默认路径。根据我的研究,我需要在运行时使用ARG并可能使用-e flag。让我们通过这个简单的Dockerfile来看一个例子。

FROM ubuntu:latest
#Assign the default value
ARG DIRHOME=/opt/docker/q
#if -e has not been set the use default DIRHOME
ADD $DIRHOME /q

Dockerfile驻留在我将运行的文件夹/ opt / docker中
docker build --build-arg DIRHOME=/q .

所有这些都成功运行,但是如您所见,我一直在使用默认值。用户是否可以在运行时将其文件路径传递给q可执行文件以覆盖DIRHOME变量?像下面这样
docker run -e "QHOME=/user1/lib/q" <container id>

我认为这是与构建上下文有关的问题,因此,如果我在/ opt / docker中运行我的Dockerfile,则它将其视为根,并且无法找到路径/ user1 / lib / q。任何潜在的解决方法?

最佳答案

运行docker build时,您从docker镜像内的DIRHOME复制文件。因此在构建之后,DIRHOME并没有真正的用途。将容器内部的路径设置为环境变量会更有意义:

ENV qpath /q
ADD /opt/docker/q $qpath

然后,当您尝试使用 docker run运行镜像时,将数据从主机传递到容器的标准方法是使用卷。然后可以使用环境变量:
docker run -v /user1/lib/q:/q image

关于docker - 如何将文件路径传递到Docker文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55852893/

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