From 9bd4187e9bfad4a98c346cef3c05f666a682e9b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 7 Feb 2026 13:13:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=B0=D0=B7=D0=B0=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B0(MySQL+Boost+cmake)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 55 ++++++++++++++++++++++++++------------------------ Dockerfile | 38 ++++++++++++++++++++++++++++++++++ README.md | 4 ++++ 3 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 Dockerfile diff --git a/CMakeLists.txt b/CMakeLists.txt index dfe0413..216ee83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.29.8) +cmake_minimum_required(VERSION 3.28.3) project(UpAndDown) set(CMAKE_CXX_STANDARD 23) @@ -10,10 +10,13 @@ endif () set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) -set(Boost_INCLUDE_DIR ${BOOST_ROOT}) -set(Boost_LIBRARY_DIR "${BOOST_ROOT}/stage/lib") -find_package(Boost 1.88.0 REQUIRED COMPONENTS filesystem json log system filesystem url) +if (WIN32) + set(Boost_INCLUDE_DIR ${BOOST_ROOT}) + set(Boost_LIBRARY_DIR "${BOOST_ROOT}/stage/lib") +endif () + +find_package(Boost 1.83.0 REQUIRED COMPONENTS filesystem json log system filesystem url) if (Boost_FOUND) include_directories(${Boost_INCLUDE_DIR}) endif () @@ -38,8 +41,8 @@ add_executable(App ./src/main.cpp ./src/db/mysql_connector.cpp ./src/db/mysql_connector.h ./src/DAO/IUserDAO.h - src/dtos/user_dto.h - src/dtos/medication_dto.h + ./src/dtos/user_dto.h + ./src/dtos/medication_dto.h ./src/DAO/MySQLUserDAO.cpp ./src/DAO/MySQLUserDAO.h ./src/endpoints_handlers/IExecutor.h @@ -52,26 +55,26 @@ add_executable(App ./src/main.cpp ./src/endpoints_handlers/AuthLoginExecutor.h ./src/exceptions/session_exception.cpp ./src/exceptions/session_exception.h - src/log/Log.h - src/log/Log.cpp - tests/fixtures/AuthFixture.h - src/endpoints_handlers/GetUserMedicationsExecutor.h - src/DAO/IMedicationsDAO.h - src/DAO/MySQLMedicationsDAO.h - src/DAO/MySQLMedicationsDAO.cpp - src/dtos/user_treatment_scheme_dto.h - src/DAO/IUserTreatmentSchemesDAO.h - src/DAO/MySQLUserTreatmentSchemesDAO.cpp - src/DAO/MySQLUserTreatmentSchemesDAO.h - src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h - src/endpoints_handlers/GetDiariesExecutor.h - src/endpoints_handlers/PostDiaryExecutor.h - src/endpoints_handlers/PutDiaryExecutor.h - src/endpoints_handlers/DeleteDiaryExecutor.h - src/DAO/IDiariesDAO.h - src/dtos/diary_dto.h - src/DAO/MySQLDiariesDao.cpp - src/DAO/MySQLDiariesDao.h + ./src/log/Log.h + ./src/log/Log.cpp + ./tests/fixtures/AuthFixture.h + ./src/endpoints_handlers/GetUserMedicationsExecutor.h + ./src/DAO/IMedicationsDAO.h + ./src/DAO/MySQLMedicationsDAO.h + ./src/DAO/MySQLMedicationsDAO.cpp + ./src/dtos/user_treatment_scheme_dto.h + ./src/DAO/IUserTreatmentSchemesDAO.h + ./src/DAO/MySQLUserTreatmentSchemesDAO.cpp + ./src/DAO/MySQLUserTreatmentSchemesDAO.h + ./src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h + ./src/endpoints_handlers/GetDiariesExecutor.h + ./src/endpoints_handlers/PostDiaryExecutor.h + ./src/endpoints_handlers/PutDiaryExecutor.h + ./src/endpoints_handlers/DeleteDiaryExecutor.h + ./src/DAO/IDiariesDAO.h + ./src/dtos/diary_dto.h + ./src/DAO/MySQLDiariesDao.cpp + ./src/DAO/MySQLDiariesDao.h ) target_link_libraries(App PRIVATE Boost::boost diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8a3fba6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +FROM ubuntu:24.04 + +ARG CONCPP_VER=9.4.0 +ARG CONCPP_TGZ=mysql-connector-c++-${CONCPP_VER}-linux-glibc2.28-x86-64bit.tar.gz + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates curl xz-utils \ + && rm -rf /var/lib/apt/lists/* + +# MySQL xDevAPI install +RUN curl -fsSL -o concpp.tgz \ + "https://dev.mysql.com/get/Downloads/Connector-C++/${CONCPP_TGZ}" \ + && mkdir -p /opt \ + && tar -xzf concpp.tgz -C /opt \ + && rm concpp.tgz \ + && found_dir="$(ls -1 /opt | grep -E '^mysql-connector-c\+\+-'"${CONCPP_VER}"'-')" \ + && mv "/opt/${found_dir}" /opt/mysql-concpp + +# CMake install +RUN apt-get update && apt-get install -y --no-install-recommends \ + cmake build-essential \ + && rm -rf /var/lib/apt/lists/* + +# Boost install +RUN apt-get update && apt-get install -y --no-install-recommends \ + libboost-all-dev \ + && rm -rf /var/lib/apt/lists/* + +# Project copy +WORKDIR /project +COPY . /project +RUN set -eux; pwd; ls -la /project; test -f /project/CMakeLists.txt + +# Build & Run project +RUN mkdir /project/dist +RUN ls -la /project +RUN cmake /project/dist/.. -Dmysql-concpp_DIR=/opt/mysql-concpp +RUN cmake --build /project/dist diff --git a/README.md b/README.md index c9ed6e5..069e6b9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# Запуск: +- cmake .. -DBOOST_ROOT=C:\Libs\boost_1_88_0 -Dmysql-concpp_DIR=C:\Libs\mysql_connector +- cmake --build . + # TODO: - ~~Сделать реальные исполнители(executors) для регистрации, авторизации, логаута~~