Как помешать TeamCity каждый раз перестраивать зависимости докера? - PullRequest
0 голосов
/ 02 мая 2018

У меня есть проект сборки TeamCity, который параметризует шаблон docker-compose.yml с версиями сборки дюжины контейнеров Docker, поэтому, чтобы получить build_counter из каждого контейнера, я установил их как зависимости моментальных снимков в docker- составить сборку. Dockerfile каждого контейнера и другие файлы находятся в своем собственном репозитории BitBucket, и у них есть триггеры для соответствующих файлов. В зависимостях моментального снимка в сборке docker-compose они имеют значение «Не запускать новую сборку, если есть подходящая», но она все равно пытается запустить все зависимые сборки, даже если в их соответствующих изменениях нет. РЕПО.

Это делает очень простую и быструю сборку для очень долгой сборки. И часто одна из зависимых сборок завершается с ошибкой «не удалось собрать изменения: соединение отказано», и я подозреваю, что это связано с попыткой TC выполнить все эти разные репо сразу.

Что я могу сделать, чтобы не запускать сборку каждой зависимости при каждом запуске сборки docker-compose?

Edit:

Вот пример того, как выглядит наш docker-compose.yml.j2: http://termbin.com/b2xy

Очевидно, я очистил его для совместного использования, и в нашем реальном шаблоне docker-compose содержится около десятка перечисленных служб.

Вот пример Dockerfile для одной из служб: http://termbin.com/upins

1 Ответ

0 голосов
/ 04 мая 2018

Вместо того, чтобы каждый раз менять исходный код вашей сборки (параметризованный docker-compose.yml) и переборывать сборку, вы можете рассмотреть возможность создания контейнеров независимо друг от друга, пометив их приращением версии и метками. После сборки сохраните изображения в локальном реестре. Используйте docker-compose, чтобы удовлетворить ваши потребности во время выполнения. docker-compose может использовать несколько файлов yaml, поэтому, если вам нужны другие изображения для конкретной сборки, просто извлеките другие нужные вам изображения. Для производства используйте другой файл yaml, который составляет систему для запуска. Добавьте LABEL в свой Dockerfile. Смотрите http://label -schema.org // rc1 / для набора этикеток, которые соответствуют вашим потребностям.

...