Кажется, что сейчас нет решения для этого варианта использования. Я нашел другие вопросы , связанные с этой проблемой; здесь и здесь .
Я ищу решения, которые позволят мне запустить docker-compose
. Я нашел решения для запуска docker
, но не для запуска docker-compose
.
Я надеюсь, что кто-то еще имел этот вариант использования и нашел решение.
Редактировать: Позвольте мне уточнить мой вариант использования:
- Когда я обнаруживаю допустимый триггер (т. Е. Нажимаем на репо), мне нужно начать новую работу.
- Мне нужно настроить среду с несколькими докерами / экземплярами (docker-compose).
- Экземплярам в этой среде требуется доступ к коду из git (монтировать тома / создавать новые образы с данными).
- Мне нужно запустить тесты в этой среде.
- Мне нужно затем извлечь результаты из этих экземпляров (результаты теста JUnit для анализа Jenkins).
У меня проблемы с 2 и 3.
Для 2 существует проблема при выполнении этого параллельно (более одного задания), так как контекст докера является общим (проблемы docker-in-docker). Если это работает более чем на одном узле, то я получаю столкновения из-за общих ресурсов (например, портов). Мой обходной путь - ограничить его только одним работающим экземпляром и поставить в очередь остальные (не идеально для CI)
Для 3 существует проблема с монтированием томов, поскольку контекст докера является общим (проблемы с Docker-in-Docker). Я не могу смонтировать код, который я извлекаю в задании, потому что его нет на хосте, который отвечает за запуск экземпляров докера, которые я запускаю. Мой обходной путь - создать новое изображение из моего шаблона и просто скопировать код в новое изображение, а затем использовать его для теста (это работает, но означает, что мне нужно использовать трюки docker cp для возврата данных, что тоже не идеал)