lstate error: нет такого файла или каталога при построении Docker из пользовательского образа с помощью команды Docker build
Я создал собственное изображение для стека лампы со следующими файлами
apps.conf
Dockerfile
entrypoint.sh
start.sh
supervisord.conf
Dockerfile
был Dockerfile
с помощью 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, поэтому ваш файл Docker будет выглядеть следующим образом:
COPY ./supervisord.conf /etc/supervisor/supervisord.conf
#etc.
И затем вы создадите его из своего каталога MyLamp с помощью docker build -t my-tag.
ADD
может использоваться для копирования локальных файлов на изображение при построении.
Пара вещей:
- Вы создаете изображение, используя текущий каталог В вашем случае
/home/ktpl/nayan/lamp
- действительный каталог Не уверен, что у вас есть каталог /home/ktpl/nayan/MyLamp
и файлы, присутствующие там. Согласно документации докера
Путь должен находиться внутри контекста сборки; вы не можете ADD../something/something, потому что первым шагом сборки 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
есть запись для того же самого.
- Вопросы
- Dockerfile
- lstate error: нет такого файла или каталога при построении Docker из пользовательского образа с помощью команды Docker build