Как зеркалировать каталог контейнера на хосте?
Все, что мне нужно, - это возможность читать каталог моего контейнера с хост-машины. Т.е. симлинк с моей хост-машины на каталог контейнера, и мне не требуется ничего, кроме прав на чтение.
Я перепробовал множество различных методов:
services:
django:
volumes:
- /tmp/docker-django-packages:/usr/local/lib/python3.12/site-packages
Проблема: /tmp/docker-django-packages
не создается, если он не существует, но нет ошибки docker, однако ни один пакет python не может быть разрешен процессом python контейнера. Если я вручную создам /tmp/docker-django-packages
на хосте, то все равно получу ту же ошибку.
services:
django:
volumes:
- type: bind
source: /tmp/docker-django-packages
target: /usr/local/lib/python3.11/site-packages
bind:
create_host_path: true
Проблема: /tmp/docker-django-packages
не создается. Если я создаю его вручную, он не заполняется. На поведение контейнера это никак не влияет.
services:
django:
volumes:
- docker-django-packages:/usr/local/lib/python3.11/site-packages
volumes:
docker-django-packages:
driver: local
driver_opts:
type: none
o: bind
device: "/tmp/docker-django-packages"
Проблема: каталог хоста не создается, если он не существует, не заполняется, если он уже существует, и контейнер функционирует как обычно
services:
django:
volumes:
- type: volume
source: docker-django-packages
target: /usr/local/lib/python3.11/site-packages
volumes:
docker-django-packages:
driver: local
driver_opts:
type: none
o: bind
device: "/tmp/docker-django-packages"
Проблема: каталог хоста не создан и не заполнен, контейнер снова функционирует так, как будто этих строк вообще не было в файле compose
services:
django:
volumes:
- type: bind
source: docker-django-packages
target: /usr/local/lib/python3.11/site-packages
volumes:
docker-django-packages:
driver: local
driver_opts:
type: none
o: bind
device: "/tmp/docker-django-packages"
Проблема: на хост-машине ничего не меняется (ни новый каталог, ни новое содержимое, если я создаю его вручную), но контейнер процесс python больше не может найти. Также кажется, что для первого запуска требуется сделать службу privileged
. Также, похоже, происходит некое кэширование, если я снимаю разрешение privileged
для последующих запусков, контейнер запускается, но я просто получаю ошибки импорта python.
Так что же я должен сделать, чтобы иметь доступ на чтение к папке контейнера с хост-машины?