Docker ADD与相对目录失败

时间:2015-07-27 16:22:51

标签: docker dockerfile

我的泊坞窗文件有以下条目

ENV SCPATH /etc/supervisor/conf.d

RUN apt-get -y update

# The daemons
RUN apt-get -y install supervisor
RUN mkdir -p /var/log/supervisor

# Supervisor Configuration
ADD ./supervisord/conf.d/* $SCPATH/

目录结构如下所示

├── .dockerignore
├── .gitignore
├── Dockerfile
├── Makefile
├── README.md
├── Vagrantfile
├── index.js
├── package.json
└── supervisord
    └── conf.d
        ├── node.conf
        └── supervisord.conf

根据我的理解,这应该可以正常工作

ADD ./supervisord/conf.d/* $SCPATH/

根据dockerfile构建上下文指向相对路径。

仍然失败

  

./ supervisord / conf.d:不存在此类文件或目录。

我是码头工人的新手,所以我可能是一个非常基本的东西。非常感谢帮助

1 个答案:

答案 0 :(得分:0)

您的.dockerignore文件内容是什么?您确定没有意外地在Docker守护程序构建映像所需的supervisord目录下面排除某些内容吗?

并且:您在哪个文件夹中执行docker build命令?确保在包含Dockerfile的文件夹中执行它,以便相对路径匹配。

更新:我试图重现您的问题。我在临时文件夹中做了什么:

mkdir -p a/b/c
echo "test" > a/b/c/test.txt
cat <<EOF > Dockerfile
FROM debian
ENV MYPATH /newdir
RUN mkdir $MYPATH
ADD ./a/b/c/* $MYPATH/
CMD cat $MYPATH/test.txt
EOF
docker build -t test .
docker run --rm -it test

按预期打印test。重要的部分有效:ADD ./a/b/c* $MYPATH。找到最后的文件,因为它的内容test在运行时显示。

当我现在将路径./a/b/c/*更改为其他内容时,我收到no such file or directory exists错误。当我按原样离开路径并从不同的文件夹调用docker build而不是我放置文件的临时文件夹时,也会显示错误。