Все, что мне нужно, — это иметь возможность читать каталог моего контейнера с моего хост-компьютера. То есть символическая ссылка с моего хост-компьютера на каталог контейнера, и мне не требуется ничего, кроме разрешений на чтение.
Я пробовал много разных методов:
Код: Выделить всё
services:
django:
volumes:
- /tmp/docker-django-packages:/usr/local/lib/python3.12/site-packages
Проблема: /tmp/docker-django-packages не создается, если он не существует, но нет ошибки докера, однако никакие пакеты 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"
Проблема: каталог хоста не создан и не заполнен, контейнер снова работает так, как будто этих строк вообще нет в файле компоновки
Код: Выделить всё
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 контейнера больше не может найти. Также, похоже, требуется сделать службу привилегированной для первого запуска. Также, похоже, происходит какое-то кэширование: если я удалю привилегированное разрешение для последующих запусков, контейнер запустится, но я просто получаю ошибки импорта Python.
Итак, что мне на самом деле нужно сделать, чтобы иметь доступ для чтения к папке контейнера с моего хост-компьютера?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... n-the-host