У меня есть простой файл .dockerignore
со следующим:
.git/
.idea/
venv/
Мой файл docker-compose.yml
монтирует том:
version: "3"
services:
frontend:
build: .
command: ["gunicorn", "--bind", "0.0.0.0:8000", "project.app:create_app()"]
env_file:
- .env
volumes:
- .:/frontend
ports:
- "8000:8000"
Возможно, я не понимаю полного синтаксиса или цели файла .dockerignore
, но после запуска docker-compose up --build
, .git/
, .idea/
и venv/
попадают в мой контейнер.
Я прочитал и увидел это, но не представляется возможным, чтобы нельзя было смонтировать и предотвратить попадание файлов и каталогов в контейнер.
Как предотвратить доступ к этим каталогам в контейнере?
Файл .dockerignore
изменит контекст, который отправляется демону докера для создания образа. Таким образом, в созданном образе не будет этих файлов, если вы не создадите их заново.
Монтирование тома полностью раздельное, а монтирование тома хоста, также известное как привязка, будет отображать содержимое каталога хоста непосредственно в контейнер как есть. Это действие на уровне ОС Linux, которое не соответствует .dockerignore
.
Вам нужно будет исключить эти файлы из каталога, который вы монтируете в контейнер, или не монтировать том в контейнер и полагаться на образ, чтобы воспользоваться преимуществами .dockerignore
.