Приветствую, в данной статье оставлю заметки по настройке проекта на C++, для запуска разработки микросервиса или другого апи сервиса. Сборка будет происходить в докере, чтобы изолировать среду разработки, и унифицировать для vps/vds сервисов.
Ссылка на гит репозиторий проекта - github/crowcpp-docker
Установка докера.
Установите десктопную версию докера ссылка.
При установки десктопной версии установится все необходимое для работы с докером.
Сборку сделал через docker-compose -> код
Код который буду указывать покрыт комментариями, которые помогут разобраться что есть что.
Схему можно представить таким образом:
Установку зависимостей при сборке контейнеров сделал через 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.
На этом все :)
Докер запущен, код скомпилирован, ответы приходят.
Склонируйте репозиторий https://github.com/G28XYZ/web-stack, весь код находится в каталоге C++, перейдите в него и пробуйте запустить, удачи)
Мой канал в телеграме - БлогНот