Docker и случайная работа / dev на виртуальной машине и IDE - PullRequest
0 голосов
/ 12 марта 2020

У меня общий вопрос о передовой практике и, скажем, способ работы между docker и IDE.

Сейчас я учусь сочинять docker и docker, и должен признать, что мне нравится идея контейнеров! Я развернул всю свою архитектуру микросервисов с весенней загрузкой на контейнерах, и все работает очень хорошо!

Дело в том, что в каждом месте свойств, когда я объявляю адрес localhost, я был вынужден изменить localhost на пользовательские имена контейнеров, например localhost: 8888 -> naming-server: 8888. Это нормально для запуска в контейнерах, но, очевидно, когда я пытаюсь запустить это в IDE, это не удастся. Мне нравится работать / оптимизировать / отлаживать микросервисы в IDE, но я не хочу перестраивать образ и возвращать весь docker -компонент каждый раз, когда я вносил небольшие изменения.

Как это выглядит в реальном dev?

С уважением!

1 Ответ

0 голосов
/ 12 марта 2020

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

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

С точки зрения чистого Docker сделать их настраиваемыми с помощью переменных среды проще всего (и Spring может устанавливать значения свойств из переменных среды). ). В Spring также существует понятие профиля , которое в принципе соответствует концепции наличия разных настроек для разных сред, но внедрение конфигурации целого профиля может быть немного сложнее во время развертывания.

Другая практика, которую я нашел полезной, заключается в том, чтобы настройки переменных среды по умолчанию были приемлемыми для разработчиков. Подготовительные и производственные развертывания все в значительной степени написаны по сценарию, и поэтому есть достаточно веская гарантия, что им будут установлены все правильные переменные среды. Если $PGHOST по умолчанию равно localhost, то это правильно для разработчика, не являющегося Docker, и все настройки на основе контейнеров могут установить соответствующее значение для их среды во время развертывания.

Даже если наш фактический Система развертывания основана на контейнерах (через Kubernetes). Я занимаюсь повседневной разработкой в ​​среде, которая в основном не Docker. Я могу запустить отдельный микросервис, запустив его из командной строки, возможно, с настройкой некоторых переменных среды, и у служб есть модульные тесты, которые могут запускаться только на извлеченном дереве исходных текстов, без необходимости какого-либо Docker. Вторым шагом является создание образа и его развертывание в среде разработки, и наша система CI выполняет интеграционные тесты с созданными ими образами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...