Надоело возиться с YAML в Докере, поэтому я написал свой микро-оркестратор на Go

Если у вас в проекте больше трех контейнеров, вы знаете эту боль. Открываешь docker-compose.yml, а там простыня на 200 строк. Хочешь добавить пятый инстанс воркера? Копируй и вставляй. Ошибся в отступе на два пробела? Твоя инфраструктура ломается.

Я Go-разработчик и в какой-то момент просто психанул. Зачем мне возиться со статичными конфигами, если у меня под рукой есть циклы, условия и нормальная типизация? В итоге за пару вечеров собрал Vessel — микро-оркестратор, который позволяет описывать окружение прямо в коде.

В чем профит:

Вместо того чтобы копипастить блоки в YAML, я пишу обычный цикл:

for _, name := range []string{"auth", "billing", "users"} { vessel.NewContainer(name).DependsOn(db).Up() }

IDE сама подсказывает методы, компилятор ловит ошибки, а инфраструктура собирается как конструктор.

Что эта штука умеет сейчас:

  • Сборка на лету. Делаю multi-stage билд прямо в рантайме. На выходе образы по 15 МБ, никакой лишней чепухи внутри.
  • Умные зависимости. Использовал каналы и горутины. Бэкенд не ждет «на авось» по таймеру, а стартует ровно в ту миллисекунду, когда база данных подает сигнал о готовности.
  • Нормальный TUI. Прикрутил спиннеры, чтобы в терминале было видно, что и как запускается параллельно, а не просто каша из логов.

Это не замена Кубернетесу и даже не полноценный конкурент Compose. Это просто удобный инструмент для тех, кто хочет управлять Docker-окружением через код, а не через текстовые простыни.

Код открыт, можно тыкать, критиковать и предлагать свое.

Гитхаб: https://github.com/krasilovalex/vessel

вот пример из кода
вот пример из кода
20
5
1
1
47 комментариев