Распространение веб-приложения на основе микросервисов Docker в качестве автономного исполняемого файла

#docker

#docker

Вопрос:

У меня есть проект, который использует Docker Compose для упаковки mysql, Keycloak и интерфейса html. Изначально приложение предназначалось для нескольких пользователей, но было выражено желание использовать его как автономное исполняемое настольное приложение. Мне было интересно, может ли что-то вроде Electron предоставить средство для достижения этой цели.

Есть ли у кого-нибудь опыт упаковки веб-приложения на основе Docker в качестве отдельного приложения для настольных компьютеров? Насколько это возможно и сложно?

Ответ №1:

На самом деле это невозможно:

  • У конечного пользователя должна быть установлена среда выполнения Docker, которая не является обычной внешней зависимостью для настольного приложения;
  • Настройка для запуска приложений с графическим интерфейсом в Docker сложна и очень зависит от платформы (для не-Linux требуется дополнительное программное обеспечение на стороне хоста);
  • Для запуска контейнеров Docker требуются разрешения уровня администратора, поскольку вы можете использовать привязку для редактирования произвольных файлов на хосте, но настольные приложения обычно этого не имеют.

(В принципе, вы могли бы обойти все эти проблемы, но Docker предназначен для запуска как системный демон и не предназначен для встраивания в другие приложения.)

Наиболее простым подходом к упаковке для этого было бы опубликовать изображения в Docker Hub или другом общедоступном репозитории и опубликовать docker-compose.yml файл, который запускает контейнеры. Затем конечному пользователю потребуется установить Docker, загрузить docker-compose.yml файл, запустить docker-compose up -d и указать своему браузеру определенный URL-адрес, чтобы получить доступ к интерфейсу. Это менее удобно для пользователя, чем автономный установщик, но это небольшой конкретный набор шагов для запуска приложения.

Если вы можете реструктурировать приложение для использования встроенной базы данных, такой как SQLite, и в качестве настольного приложения вам не нужна федеративная система входа, то вы также, вероятно, могли бы перестроить все это как собственное приложение Electron, вообще не привлекая Docker.