В Docker, как работать с несколькими конфигурациями сборки test / prod

465
Michael Oryl

Мы оцениваем Docker для использования при развертывании наших приложений. До сих пор мы не могли получить от Interwebs информации о том, как мы будем иметь дело с различными средами исполнения, которые мы используем в нашей компании.

Для упрощения скажем, что у нас есть тестовая среда и производственная среда. Если бы я развертывал Application-X в тестовой среде, я бы передавал параметр командной строки в Maven или Gradle, который заставлял бы его использовать конкретную конфигурацию, которая, например, указывала бы на Service-X-Test.

При развертывании в производство Application-X будет собран с конфигурацией, которая вместо этого указывает на Service-X-Prod.

Может ли Docker справиться с подобными вещами, или я полностью упускаю суть в Docker?

У нас есть несколько приложений, которые являются более новыми и управляют этой конфигурацией во время выполнения с помощью сценариев Spring и Groovy, но, к сожалению, это скорее исключение, чем правило. Docker, похоже, очень хорошо работает с этими новыми приложениями.

2

1 ответ на вопрос

1
Howard Lee

Refer to this presentation:

Lessons from using Docker to improve web developer productivity

Jump forward to 21:09 mark, the solution is to use a fixed domain name (in your case Service-X-Prod). In developer test environment, you'd configure /etc/hosts file so that traffics point to Service-X-Prod, would route to Service-X-Test instead.

I think it's a genuine solution as it achieves two things: Retain integrity of the containers by eliminates the need to reroute traffic due to environment change, and no longer the need for separate configurations for test and prod.