lstate错误:使用Docker构build命令从自定义图像构buildDocker时没有此类文件或目录

我已经创build了一个自定义图像的灯栈与以下文件

apps.conf Dockerfile entrypoint.sh start.sh supervisord.conf 

Dockerfile是使用ENV,RUN,ADD和CMD命令创build的。

每个应用程序安装成功,但坚持在ADD命令,并检查给定的path是正确的。

 ADD /home/ktpl/nayan/MyLamp/supervisord.conf /etc/supervisor/supervisord.conf ADD /home/ktpl/nayan/MyLamp/apps.conf /etc/supervisor/conf.d/apps.conf ADD /home/ktpl/nayan/MyLamp/entrypoint.sh /entrypoint.sh ADD /home/ktpl/nayan/MyLamp/start.sh /start.sh 

进程卡在添加命令:

 lstat home/ktpl/nayan/lamp/supervisord.conf: no such file or directory 

Docker的构build始终是相对于上下文而言的 – 也就是您在docker build命令中传递的目录。 您不能在ADD中使用绝对path ,您应该指定相对于构build上下文的源文件。

对于本地文件,你应该使用COPY而不是ADD ,所以你的Dockerfile变成:

 COPY ./supervisord.conf /etc/supervisor/supervisord.conf #etc. 

然后你用docker docker build -t my-tag .从你的MyLamp目录中构build它docker build -t my-tag .

ADD可用于将本地文件复制到图像。

几件事:

  • 您正在使用当前目录构build图像
  • 在你的情况下, /home/ktpl/nayan/lamp是有效的目录
  • 不知道如果你有一个目录/home/ktpl/nayan/MyLamp存在和文件存在那里。

根据docker的文件

path必须在构build的上下文中; 你不能添加../something /东西,因为docker build的第一步是将上下文目录(和子目录)发送到docker守护进程。

如果您的文件与构build映像的目录位于同一目录中,则可以在Dockerfile使用以下语句

 ADD ./supervisord.conf /etc/supervisor/supervisord.conf ADD ./apps.conf /etc/supervisor/conf.d/apps.conf ADD ./entrypoint.sh /entrypoint.sh ADD ./start.sh /start.sh 

当然,就像在另一个答案中提到的那样,也可以使用COPY

示例Dockerfile内容:

 FROM busybox ADD ./test.txt /test.txt CMD ls / 

您可以构build图像并运行它显示在下面的图像中添加的文件。

在这里输入图像说明

如果所有的文件和目录出现,仍然看到这个问题,然后检查.dockerignore有相同的条目。