Docker - Удалить файл, добавленный на предыдущем этапе - PullRequest
0 голосов
/ 27 апреля 2020

У меня работает контейнер caddy

Я пытаюсь удалить файл, добавленный на шаге 16 в Dockerfile, у меня есть что-то подобное в моем Dockerfile

FROM abiosoft/caddy:1.0.3

RUN rm /srv/index.html
RUN ls
>> index.html

Есть ли у нас решение удалить файл, добавленный на предыдущих этапах? Или мое единственное решение - "разветвить" Dockerfile и удалить эту строку?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Есть и другой вариант, кроме форка Dockerfile. Вы можете смонтировать src во время работы контейнера, и он перепишет то, что находится внутри тома. Например, docker run ... -v /path/to/php/src:/srv ... будет помещать файлы контейнера (файловую структуру), которые находятся внутри /path/to/php/src.

0 голосов
/ 27 апреля 2020

Если вы посмотрите на историю изображений по вашей ссылке, вы увидите строку 13

VOLUME [/root/.caddy /srv]

Эта директива VOLUME означает, что команды RUN впоследствии не смогут вообще изменить этот каталог. Вы увидите именно тот результат, о котором сообщаете: команда RUN, по-видимому, будет выполнена успешно, а внутри этой единственной команды RUN вы увидите файлы, измененные, но они не будут сохраняться при каждом запуске.

RUN rm /srv/index.html \
 && echo 'ls -l in same RUN line' \
 && ls -l /srv
RUN echo 'ls -l in separate RUN line' \
 && ls -l /srv

Нет способа отменить это, не разветвив оригинальный Dockerfile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...