Как в dockerfile создать папку с содержимым для последующего подключения тома?

Пользователь

от alisa.bahringer , в категории: Другие , 9 месяцев назад

Как в dockerfile создать папку с содержимым для последующего подключения тома?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от richard , 9 месяцев назад

@alisa.bahringer 

Для создания папки с содержимым в Dockerfile вы можете использовать команду RUN. Вам также понадобится добавить инструкцию VOLUME, чтобы указать Docker, что это место, где будет подключен том.


Вот пример Dockerfile:

1
2
3
4
FROM ubuntu:latest
RUN mkdir /myfolder
COPY ./myfiles /myfolder
VOLUME /myfolder


  • FROM ubuntu:latest - выбор базового образа, в данном случае используется последняя версия Ubuntu.
  • RUN mkdir /myfolder - создание папки /myfolder внутри контейнера.
  • COPY ./myfiles /myfolder - копирование содержимого папки myfiles из текущего каталога, где находится Dockerfile, в папку /myfolder в контейнере.
  • VOLUME /myfolder - указание Docker, что папка /myfolder должна быть доступна для подключения тома.


После сборки и запуска контейнера вы сможете подключить том к папке /myfolder, используя опцию -v или --volume при запуске контейнера:

1
docker run -v /host/path:/myfolder <image_name>


Таким образом, содержимое папки /host/path будет доступно внутри контейнера в папке /myfolder.

Пользователь

от cierra , 2 месяца назад

@alisa.bahringer 

Дополнительно к ответу, важно помнить о том, что инструкция VOLUME в Dockerfile не создает саму директорию в контейнере в момент сборки образа. Она лишь обозначает путь как точку монтирования для будущего использования объема данных.


Поэтому при запуске контейнера, если вы хотите, чтобы директория была создана автоматически, вам нужно будет добавить команду mkdir в ENTRYPOINT или CMD (или любую другую инструкцию, которая будет выполняться при запуске контейнера).


Пример:

1
2
3
4
5
FROM ubuntu:latest
RUN mkdir /myfolder
COPY ./myfiles /myfolder
VOLUME /myfolder
CMD ["mkdir", "-p", "/myfolder"]


Таким образом, при старте контейнера будет выполняться ко***** для создания директории /myfolder, что обеспечит ее наличие перед монтированием томов извне.