Попробуйте dockerfeed . Он использует функцию докера для создания контекста через stdin. Я написал сценарий для решения именно вашей проблемы, с которой столкнулся сам.
Чтобы заменить Dockerfile на другой, сделайте это так:
dockerfeed -d Dockerfile.app . | docker build -t deepak/ruby -
И вуаля. Dockerfeed делает то же самое, что и docker build
. Он упаковывает исходный код со своим Dockerfile, но позволяет вам заменить старый Dockerfile на нужный. При этом файлы не создаются, источник не изменяется. Сгенерированный tar-архив передается в докер, который, в свою очередь, отправляет его демону докера.
Обновление:
это был правильный ответ в старые времена, когда -f
переключателя не было. В докере версии 1.5 эта опция была представлена. Теперь вы можете создать другой Dockerfile следующим образом:
docker build -f other-Dockerfile .