Реализовать раздел volumes в композере
Реализовать раздел volumes в композере
Каждый элемент должен иметь как минимум следующие свойства:
- name - название раздела (используется ключ структуры в свойстве volumes, но может быть задано отличное от него значение).
- type - тип раздела.
- path - путь к точке монтирования внутри дистрибутива.
Тип раздела:
-
vhd - для раздела создаётся отдельный vhdx файл принадлежащий проекту. -
drvfs - монтируется windows директория в указанное место внутри контейнера -
nfs - создаётся запись в fstab для подключения nfs диска в контейнер -
shared - подключает общий глобальный диск, на котором создаётся директория для раздела проекта, в которую через bind-mount уже монтируется директория в дистрибутиве проекта. -
bind - добавляет в /etc/fstab запись монтирования одной директории внутри FS дистрибутива в другое место внутри FS дистрибутива.
Дополнительные свойства:
- options - пользовательские опции для монтирования раздела.
- sizeGB - размер раздела.
- devicePath - путь к windows папке которую необходимо смонтировать в дистрибутив.
Значения options которые устанавливаются по умолчанию:
- vhd: defaults
- bind: bind,nobootwait
- drvfs: metadata,noatime,dirsync,mmap,access=client,msize=262144,uid=1000,gid=100,umask=0022,fmask=0133,case=off
- nfs: user,rw,exec
Процесс создания VHDX:
Если диск уже существует (файл диска присутствует в FS), то процесс создания диска пропускается, вместо этого происходит чтение служебной информации о ранее созданном диске, затем диск подключается к WSL, а затем уже редактируется /etc/fstab в целевом дистрибутиве для монтирования этого диска. В случае возникновения каких либо ошибок во всём этом процессе, возвращается ошибка, диск при этом не отключается от WSL и файл диска не удаляется.
Если диск не существует (файл диска отсутствует в FS), то сперва создаётся и форматируется новый диск, затем диск подключается к WSL, а затем уже редактируется /etc/fstab в целевом дистрибутиве для монтирования этого диска. В случае возникновения каких либо ошибок во всём этом процессе, возвращается ошибка, при этом новый созданный пустой диск отключается от WSL, и файл диска удаляется.
Shared:
Идея shared разделов заключается в том, что вместо того чтобы под каждый проект создавать отдельные разделы под данные, можно использовать общие "глобальные" разделы для хранения данных сервисов и пользовательских файлов проектов. Разделяемые разделы должны быть созданы отдельной командой до того как они будут использованы. Количество создаваемых глобальных разделов не ограничено. Размер разделов задаётся в момент их создания и не меняется, разделы создаются один раз. Пересоздание разделов возможно только с полной потерей всей информации на них. Доступ к разделам осуществляется по их имени, в глобальной конфигурации приложения сохраняется отдельный список таких разделов доступный всем проектам. Должна быть команда показывающая список зарегистрированных глобальных разделов.