[英]lstate error: no such file or directory while building Docker from a custom image with Docker build command
我已經為燈堆創建了一個自定義圖像,其中包含以下文件
apps.conf
Dockerfile
entrypoint.sh
start.sh
supervisord.conf
Dockerfile
是使用ENV,RUN,ADD和CMD命令創建的。
每個應用程序安裝成功,但將其粘貼在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
Docker構建始終相對於上下文工作 - 即您在docker build
命令中傳遞的目錄。 您不能在ADD中使用絕對路徑 ,您應該指定相對於構建上下文的源文件。
對於本地文件,您應該使用COPY而不是ADD ,因此您的Dockerfile變為:
COPY ./supervisord.conf /etc/supervisor/supervisord.conf
#etc.
然后使用docker docker build -t my-tag .
從MyLamp目錄構建它docker build -t my-tag .
ADD
可用於在構建時將本地文件復制到映像。
幾件事:
/home/ktpl/nayan/lamp
是有效目錄 /home/ktpl/nayan/MyLamp
存在且文件存在於那里。 路徑必須位於構建的上下文中; 你不能添加../something / something,因為docker構建的第一步是將上下文目錄(和子目錄)發送到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
是否具有相同的條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.