Найти в Дзене

Бэкенд на C++ с фреймворком CrowCpp, сборка в Docker на стэке cmake, conan, alpine, nginx.

Приветствую, в данной статье оставлю заметки по настройке проекта на C++, для запуска разработки микросервиса или другого апи сервиса. Сборка будет происходить в докере, чтобы изолировать среду разработки, и унифицировать для vps/vds сервисов.
Ссылка на гит репозиторий проекта -
github/crowcpp-docker

Картинка сгенерирована нейросетью. Примерная схема работы данной сборки docker-compose
Картинка сгенерирована нейросетью. Примерная схема работы данной сборки docker-compose

Установка докера.

Установите десктопную версию докера ссылка.
При установки десктопной версии установится все необходимое для работы с докером.

Сборку сделал через docker-compose -> код

Код который буду указывать покрыт комментариями, которые помогут разобраться что есть что.

Схему можно представить таким образом:

Схема взаимодействия docker контейнеров
Схема взаимодействия docker контейнеров

Установку зависимостей при сборке контейнеров сделал через conan.
Сам
конфиг простой, главное необходимо прописать установку зависимостей по conan в Dockerfile.

webserver в схеме, будет работать на nginx, для него тоже отдельный Dockerfile.
Ключевой момент на который стоит обратить внимание в настройке докер контейнера nginx, это то что в файле
default.conf запросы будут перенаправляться в http://cppcrow:8080 - domain name тут как раз наименование контейнера для C++ cppcrow из docker-compose. Внутри контейнера webserver, контейнер cppcrow будет пинговаться благодаря определению сети networks - app-network в docker-compose.

Так же чтобы proxy_pass корректно отработал необходимо чтобы был запущен сам сервер в контейнере cppcrow. В src/main.cpp запускается сервер на порту 8080. В конце сборки контейнеров, докер тригернет файл в /app/build/server в контейнере cppcrow, тем самым запустит скомпилированный код main.cpp.

Успешная сборка контейнеров
Успешная сборка контейнеров

При успешной сборке контейнеров, можно перейти в браузере на адрес http://localhost:18080, ответ в браузере должен будет соответствовать возвращаемому значению в маршруте CROW_ROUTE(app, "/") в main.cpp.

При изменении кода main.cpp можно включить перекомпиляцию кода в контейнере, для этого в консоли где запустили команду запуска докера нажмите w.

Доп. команды доступные в терминала после docker-compose up --build
Доп. команды доступные в терминала после docker-compose up --build

Чтобы поднять контейнеры пропишите в терминале команду docker-compose up --build.

На этом все :)
Докер запущен, код скомпилирован, ответы приходят.
Склонируйте репозиторий
https://github.com/G28XYZ/web-stack, весь код находится в каталоге C++, перейдите в него и пробуйте запустить, удачи)

Мой канал в телеграме - БлогНот