我为灯堆创建了一个自定义图像,其中包含以下文件
apps.conf
Dockerfile
entrypoint.sh
start.sh
supervisord.conf
使用ENV,RUN,ADD和CMD命令创建 Dockerfile
。
每个应用程序安装成功,但将其粘贴在ADD命令并检查给定的路径是否正确。
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
答案 0 :(得分:0)
Docker构建始终相对于上下文工作 - 即您在docker build
命令中传递的目录。 You cannot use absolute paths in ADD,您应该指定相对于构建上下文的源文件。
对于本地文件,您也应该使用COPY instead of ADD,因此Dockerfile变为:
COPY ./supervisord.conf /etc/supervisor/supervisord.conf
#etc.
然后使用docker build -t my-tag .
答案 1 :(得分:0)
ADD
可用于在构建时将本地文件复制到图像。
一些事情:
/home/ktpl/nayan/lamp
是有效目录/home/ktpl/nayan/MyLamp
并且文件存在于其中。路径必须位于构建的上下文中;你不能添加../something / something,因为docker build的第一步是将上下文目录(和子目录)发送到docker守护进程。
如果您的文件与构建图片位于同一目录中,那么您可以在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 /
您可以构建图像并运行它,显示正在下图中添加的文件。
如果所有文件和目录都存在且仍然看到此问题,请检查.dockerignore
是否有相同的条目。