Пришел ко мне коллега и спросил: "Как проигнорировать .dockerignore
при сборке docker-образа?"
После совместных поисков и проверок, было найдено простое решение, состоящее в следующем:
Собрали тестовый проект:
А теперь подробнее по файлам:
Dockerfile
FROM alpine COPY . . ENTRYPOINT cat data.txt
.dockerignore
data.txt README.md
data.txt (файл который будем исключать при сборке)
hello habr
Dockerfile.dev
FROM alpine COPY . . ENTRYPOINT cat data.txt
Как видим он ничем не отличается от ранее созданного Dockerfile, но тут нас интересует постфикс в имени файла
Dockerfile.dev.dockerignore (файл игнора для так называемой dev сборки)
README.md
Теперь у нас есть 2 одинаковых Dockerfile, с разницей только в названии, и у каждого есть свой .dockerignore, ну и чтоб это работало надо установить флаг DOCKER_BUILDKIT=1.
Ну а теперь, можно проверить что получилось:
аля прод-сборка
docker build -t with_ignore -f Dockerfile .
docker run --rm with_ignore
в выводе увидим
cat: can't open 'data.txt': No such file or directory
тест сборка
docker build -t without_ignore -f Dockerfile.dev .
docker run --rm without_ignore
in output
hello habr
PROFIT.
github