Как собрать приложение из докер образов в бинарник?
Например имеются контейнеры redis nodejs и тд... все это вместе создает определенное приложение.
Как это скомпилировать что бы на выходе был 1 единственный бинарник который работал бы будто запустить docker compose up ?
Клиент ничего не должен знать о докере зависимостях и тд. Тупо запустил бинарник и приложение работает. +желательно мультиплатформа
Мб есть какой то инструмент который и докер вместе с приложением пакует. Что бы грубо говоря есть запускаемый файл приложения, в нем все контейнеры и тд. Ну и запускается на линуксе нативно, на винде через всл например.
Что бы обстрагироваться от докера, грубо говоря 1 файл приложения в котором все есть а чего нету через волюме прокидывается типа конфигов, данных и тд. Например файл myapp.exe рядом лежит .env с конфигурацией который внутрь прокидывается. Клиента уже не волнует докер там внутри или еще что...
Клиент тупо запускает myapp.exe и приложение без танцев с бубном с разными зависимостями запускается без проблем. Что бы типа что то электрона, только с контейнерами
historydev, разрабатывать приложение с использованием контейнеров. В итоге для дистрибьюции иметь 1 запускаемый файл и клента не должно волновать что там и с какими зависимостями. Он запускает файл и приложение работает подобно docker compose up.
Может для этого не докер сам надо, может только его некоторые компоненты для запуска контейнеров. runc, containerd или что там ещё есть, podman вроде не требует демона и докер совместимый.
В общем надо собирать приложение из контейнеров в бинарник который просто запускается и работает. Без всяких скриптов
Нужен не бинарник, а скрипт, который установит Докер, создаст конфиг и запустит. Мультиплатформенно и универсально сделать это - большой геморрой, даже через подходящее ПО вроде Ansible. Имхо, вы не в ту сторону воюете.
Мб есть какой то инструмент который и докер вместе с приложением пакует. Что бы грубо говоря есть запускаемый файл приложения, в нем все контейнеры и тд. Ну и запускается на линуксе нативно, на винде через всл например.
Что бы обстрагироваться от докера, грубо говоря 1 файл приложения в котором все есть а чего нету через волюме прокидывается типа конфигов, данных и тд. Например файл myapp.exe рядом лежит .env с конфигурацией который внутрь прокидывается. Клиента уже не волнует докер там внутри или еще что...
GipnoSai, ага. снап требует наличия обвязки среды выполнения на целевой ситеме.
аппимадж еще и енто говно таскает в пакете с собой.
кому чего.
в винде внутри wsl appimage наверн запустится.
вас противоречие в ваших словах не смущает?
надо объединить в одно приложение, но при этом типа докера чтобы была изоляция.
Чего от чего?
Определитесь, на чем это все будет работать, опишите в виде скрипта первоначальную установку необходимого софта, напишите корректный docker compose и вы получите то, что хотите...
Например приложение которое использует postgress внутри приложения изолировано, наружу только данные этой бд выходят. Нода что то делает там внутри, мб какой то сервер поднимает и тд...
Клиенту не надо ставить постгрес отдельно конектится как то и тд .. Все эти компоненты создают цельное приложение, как будто запущено через docker compose up.
Что бы тупо запустил файл и приложение работает, поднимает там внутри все сервисы изолировано. Нам не надо беспокоится установлен ли постгрес у клиента, какой версии, на каком порту и тд... у него может стоять свой постгрес с которым он может что угодно делать на приложение это никак не повлияет, занят там порт или нет и тд...
В общем идея разрабатывать приложение на контейнерах как с обычным докером, но компиляция в самодостаточный бинарник который не требует никаких зависимостей, запустил и работает
С таким подходом можно писать на линуксовых технологиях, например бекенд для того же электрона и запускать спокойно на винде и еще где угодно, так как это работает в контейнерах проблем не должно быть.
Руслан Федосеев, клиенту тогда надо ставить докер это уже зависимость.
Вдруг у него уже стоит докер, хрен его знает что он с ним делает, какой он версии и тд. Мб ему для своих целей надо докер такой то версии, что не совместимо с приложением. И тд....
Было бы удобно скомпилировать это все как то, под разные архитектуры. И вауля на выходе самодостаточный бинарник который запустится где угодно, без всяких скриптов проверок, доустановок пакетов и тд..
Руслан Федосеев, например у меня кампоуз файл такой то версии а у него старый докер стоит... и тд. В общем хочется что бы это было как приватный класс в програмировании, потребитель использует только паблик интерфейсы а что там внутри и от чего зависит не его забота.
Что бы на линухе запустил и работает, на винде запустил если есть всл работает и тд... так можно будет использовать кучу линуксового софта в разработке своего приложения изолировано от хост машины и будешь уверен что он везде заведется так как в контейнере будет 1 среда