我的泊坞窗文件有以下条目
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:不存在此类文件或目录。
我是码头工人的新手,所以我可能是一个非常基本的东西。非常感谢帮助
答案 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
而不是我放置文件的临时文件夹时,也会显示错误。