Single-page Application (SPA) – это набор статических JavaScript и HTML файлов, а так же картинок и других ресурсов. Поскольку они не изменяются динамически, опубликовать их в интернете очень просто. Для этого существует большое количество дешёвых и даже бесплатных сервисов, начиная с простого GitHub Pages (а для кого-то даже с narod.ru) и заканчивая CDN вроде Amazon S3. Однако мне нужно было другое.
Мне нужен был Docker-образ с SPA, чтобы его легко можно было запустить как в продакшене в составе Kubernetes-кластера, так и на машине back-end разработчика, который понятия не имеет, что такое SPA.
UPD 07.07.20: Посмотерть самому на то, что в итоге получилось, можно тут: https://github.com/alexxxnf/spa-docker-example
Я для себя определил следующие требования к образу:
- простота в использовании (но не в сборке);
- минимальный размер как с точки зрения диска, так и с точки зрения RAM;
- настройка через переменные окружения, чтобы образ можно было использовать в разных средах;
- максимально эффективная раздача файлов.
Сегодня я расскажу как:
- выпотрошить nginx;
- собрать brotli из исходников;
- научить статические файлы понимать переменные окружения;
- ну и конечно как собрать из всего этого Docker-образ.
Цель этой статьи поделиться моим опытом и спровоцировать опытных участников сообщества на конструктивную критику.