Как зеркалировать каталог контейнера на хосте?

Все, что мне нужно, - это возможность читать каталог моего контейнера с хост-машины. Т.е. симлинк с моей хост-машины на каталог контейнера, и мне не требуется ничего, кроме прав на чтение.

Я перепробовал множество различных методов:

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.


Так что же я должен сделать, чтобы иметь доступ на чтение к папке контейнера с хост-машины?

Вернуться на верх