我是Docker的新手。
我想了解以下问题。我一直在搜索,但找不到我的问题的答案。
以下是我目前拥有的
文件结构是这样的:
/home/user1/docker
|__ Dockerfile
在Dockerfile中:
From
ARG BLD_DIR=/tmp
RUN mkdir /workdir
WORKDIR /workdir
COPY ${BLD_DIR}/a.file /workdir
我跑了
docker build --build-arg BLD_DIR=${BLD_DIR} -t docker-test:1.0 -f Dockerfile
总是像这样的错误
最佳答案
默认情况下,运行
docker build
命令的目录中的所有文件都将复制到Docker上下文文件夹。因此,当您使用
ADD
或COPY
命令时,所有路径实际上都是相对于build文件夹的,如文档所述:这是自愿的,因为使用
docker build
构建镜像不应依赖于系统上的辅助文件:如果在2台不同的机器上构建相同的Docker镜像,则不应有所不同。/home/user1/
|___file1
|___docker/
|___|___ Dockerfile
如果在
docker build -t test -f docker/Dockerfile .
文件夹中运行/home/user1
,则您的构建上下文将为/home/user1
,因此您可以在Dockerfile中使用COPY file1
。出于同样的原因,您不能直接在Dockerfile中使用环境变量。这个想法是,您的
docker build
命令应“打包”在2个不同系统上生成同一图像所需的所有信息。但是,您可以使用docker-compose破解它,就像这里解释的:Pass host environment variables to dockerfile。
关于docker - docker复制问题并设置主机环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51343389/