
Каждый раз, когда речь заходит о новом проекте, начинается вечный спор: какой фреймворк выбрать? Go или Rust для производительности? Python для скорости разработки? А может, стоит попробовать что-то на Elixir? Муки выбора знакомы многим. Вместо того чтобы в очередной раз теоретизировать, я решил пойти другим путем: взять и протестировать их все.
Так родилась идея проекта Framework DevBox — универсальной песочницы, где десять популярных фреймворков на разных языках упакованы в Docker-контейнеры и готовы к запуску одной командой.
Проблема: боль настройки
Чтобы по-настоящему «пощупать» фреймворк, недостаточно запустить "Hello, World!". Нужна полноценная среда разработки:
Hot-reload: Чтобы видеть изменения в коде мгновенно, а не перезапускать сервер вручную.
Линтер: Чтобы код был чистым и соответствовал стандартам.
Тесты: Чтобы убедиться, что всё работает как надо.
Сборка для продакшена: Чтобы понимать, как приложение будет деплоиться.
Настраивать всё это для каждого отдельного фреймворка — долго и утомительно. Можно потратить целый день на борьбу с зависимостями, версиями Node.js, виртуальными окружениями Python или переменными окружения Go, так и не дойдя до написания кода.
Я решил эту проблему раз и навсегда. Моей основной задачей стало создание такой системы, где для запуска любого фреймворка нужны только Docker
и Make
.
Решение: Framework DevBox
Framework DevBox — это репозиторий, в котором собраны популярные современные фреймворки, каждый в своей директории, с уже готовой инфраструктурой.
Что внутри «коробки» для каждого фреймворка?
Готовая среда разработки: Запускается одной командой
make dev
и включает hot-reload.Проверка качества кода: Команда
make test-prod
запускает линтер и тесты, имитируя пайплайн CI/CD.Раздельные Docker-файлы:
Dockerfile.dev
для разработки иDockerfile.prod
для оптимизированной продакшен-сборки.Единая структура: Все проекты организованы одинаково, что упрощает переключение между ними.
Готовые эндпоинты: В каждом фреймворке уже есть простой "Hello World" и API для генерации QR-кодов.
Какие фреймворки вошли в набор?
Я старался выбирать современные и популярные решения с активным сообществом:
Go: Gin
Kotlin: Ktor
Rust: Actix Web
TypeScript: NestJS
Java: Spring Boot
JavaScript: Fastify
Ruby: Ruby on Rails
Elixir: Phoenix
Как это работает?
Всё предельно просто. У вас должны быть установлены только Docker и Make.
Клонируете репозиторий.
Выбираете фреймворк, например, FastAPI.
Переходите в его директорию и запускаете dev-режим:
cd fastapi
make dev
Эта команда соберёт dev-образ, установит зависимости и запустит сервер с hot-reload. Ваша локальная папка app
будет смонтирована внутрь контейнера, так что вы можете писать код в любимой IDE, а изменения сразу же применятся.
Хотите проверить, готов ли ваш код к продакшену?
make test-prod
Эта команда выполнит полный цикл проверки: прогонит линтер, запустит тесты и соберёт легковесный production-образ.
Единая структура — ключ к простоте
Чтобы не приходилось каждый раз разбираться в новом проекте, я привел все фреймворки к единой структуре:
.
└── [framework-name]/
├── app/ # Здесь живёт весь исходный код вашего приложения
├── Dockerfile.dev # Dockerfile для разработки с hot-reload
├── Dockerfile.prod # Многоступенчатый Dockerfile для production-сборки
└── Makefile # Файл с командами `dev` и `test-prod`
Такая стандартизация позволяет легко сравнивать фреймворки, не отвлекаясь на детали их конфигурации.
Выводы
После того как я закончил этот проект, мой взгляд на выбор технологий изменился.
Все языки хороши. Если выстроить прочную базу (hot-reload, линтер, тесты, CI/CD), комфортно разрабатывать можно на чём угодно.
Выбор зависит от задачи. На первый план выходит не сам язык, а экосистема: наличие нужных библиотек для решения конкретной проблемы, скорость разработки и простота поддержки.
Не бойтесь пробовать новое. Моя «песочница» как раз и создана для того, чтобы вы могли безболезненно запустить любой из этих фреймворков и решить, подходит ли он вам.
Я не хочу навязывать какой-то конкретный фреймворк. Вместо этого я предлагаю вам самим взять и попробовать. Вы можете просто запустить make dev
и начать писать код или же, наоборот, использовать репозиторий как учебное пособие, раскручивая логику от Makefile и Dockerfile.
Надеюсь, мой проект сэкономит кому-то время и поможет сделать осознанный выбор.
Комментарии (5)
DjUmnik
27.09.2025 05:39Почему нет php?
JBFW
27.09.2025 05:39А что это? Наверное, на латыни или древнегреческом? /s
В институте же рассказывали, "это устаревший язык без типизации" и немодный )
А так-то идея засунуть всё в докер - логичная и хорошая, на каком языке не делай. Развернул локально - поработал, сделал, развернул на сервере - запустил в продакшн
randomsimplenumber
Джентльменский набор веб разработчика, теперь с docker ;)
Kahelman
Хорошее ренегат проще всю заразу которую bpm притащит с компа убирать. :)