Игнорирование файлов и каталогов с помощью .dockerignore

У меня есть простой файл .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/ попадают в мой контейнер.

Я прочитал и увидел это, но не представляется возможным, чтобы нельзя было смонтировать и предотвратить попадание файлов и каталогов в контейнер.

Как предотвратить доступ к этим каталогам в контейнере?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
2 866
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Файл .dockerignore изменит контекст, который отправляется демону докера для создания образа. Таким образом, в созданном образе не будет этих файлов, если вы не создадите их заново.

Монтирование тома полностью раздельное, а монтирование тома хоста, также известное как привязка, будет отображать содержимое каталога хоста непосредственно в контейнер как есть. Это действие на уровне ОС Linux, которое не соответствует .dockerignore.

Вам нужно будет исключить эти файлы из каталога, который вы монтируете в контейнер, или не монтировать том в контейнер и полагаться на образ, чтобы воспользоваться преимуществами .dockerignore.

Другие вопросы по теме