up docker-compose.yml

+ node js in gradle
This commit is contained in:
2026-04-17 15:03:49 +03:00
parent 201ebcd9fb
commit 58c43fddc5
4 changed files with 60 additions and 26 deletions

View File

@@ -5,6 +5,16 @@ plugins {
java
application
id("com.gradleup.shadow") version "9.2.2"
id("com.github.node-gradle.node") version "7.1.0"
}
node {
version.set("22.19.0") // версия Node.js
npmVersion.set("11.12.1") // версия npm
download.set(true) // автоматически скачать Node.js
workDir.set(file("${project.projectDir}/.gradle/nodejs"))
npmWorkDir.set(file("${project.projectDir}/.gradle/npm"))
nodeProjectDir.set(file("${project.projectDir}/frontend")) // папка с Vue-проектом
}
group = "com.example"
@@ -75,6 +85,17 @@ tasks.withType<JavaExec> {
args = listOf(mainVerticleName)
}
val buildFrontend by tasks.registering {
group = "build"
description = "Build Vue frontend"
dependsOn("npm_install") // установка зависимостей
dependsOn("npm_run_build") // сборка (должен быть скрипт "build" в package.json)
}
tasks.processResources {
dependsOn(buildFrontend)
}
tasks.register("collectAllDependencies") {
group = "project"
description = "Сбор всех зависимостей для офлайн работы"

View File

@@ -1,7 +1,7 @@
services:
db:
iiko-db:
image: mariadb:12.2.2
container_name: mariadb
container_name: iiko-mariadb
restart: unless-stopped
user: "1000:1000"
environment:
@@ -18,9 +18,9 @@ services:
- $PWD/app/mariadb:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
pma:
iiko-pma:
image: phpmyadmin:5.2.3
container_name: phpmyadmin
container_name: iiko-phpmyadmin
depends_on:
- db
restart: unless-stopped
@@ -33,9 +33,9 @@ services:
ports:
- "7102:80"
redis:
iiko-redis:
image: redis:latest
container_name: redis
container_name: iiko-redis
restart: unless-stopped
user: "1000:1000"
environment:
@@ -48,7 +48,7 @@ services:
- $PWD/app/redis:/data
- /etc/localtime:/etc/localtime:ro
app:
iiko-app:
build: .
container_name: iiko-app
restart: unless-stopped
@@ -58,11 +58,11 @@ services:
- db
- redis
environment:
DATABASE__HOST: db
DATABASE__HOST: iiko-db
DATABASE__PORT: 3306
DATABASE__DATABASE: app_db
DATABASE__USER: app_user
DATABASE__PASSWORD: app_pass
REDIS__HOST: redis
REDIS__HOST: iiko-redis
REDIS__PORT: 6379
SERVER__PORT: 7104

View File

@@ -62,7 +62,6 @@ public class MainVerticle extends AbstractVerticle {
.onFailure(err -> {
log.error("Failed to initialize database", err);
startPromise.fail(err);
return;
});
Router router = initRouter();
@@ -104,6 +103,22 @@ public class MainVerticle extends AbstractVerticle {
}
});
// ------ Раздаём Vue статику ------
router.route("/assets/*").handler(StaticHandler.create("webroot/assets"));
router.route("/favicon.ico").handler(ctx -> ctx.response().sendFile("webroot/favicon.ico"));
// ------ SPA fallback: отдаём index.html на все не-API запросы ------
router.route().handler(ctx -> {
if (ctx.request().path().startsWith("/api")) {
ctx.next();
} else {
ctx.response()
.putHeader("Content-Type", "text/html")
.sendFile("webroot/index.html");
}
});
// Health Checks
HealthCheckService healthCheckService = new HealthCheckService(vertx, redis, db);
healthCheckService.registerHealthCheck(router);
@@ -128,8 +143,7 @@ public class MainVerticle extends AbstractVerticle {
router.route("/api/admin/*").handler(authHandler::requireAuth);
// Получение списка пользователей
router.get("/api/admin/users").handler(rc -> {
userService.getAllUsers().onComplete(ar -> {
router.get("/api/admin/users").handler(rc -> userService.getAllUsers().onComplete(ar -> {
if (ar.succeeded()) {
rc.response()
.putHeader("Content-Type", "application/json")
@@ -137,8 +151,7 @@ public class MainVerticle extends AbstractVerticle {
} else {
rc.response().setStatusCode(500).end(ar.cause().getMessage());
}
});
});
}));
// Получение текущего пользователя
router.get("/api/admin/me").handler(rc -> {
@@ -156,9 +169,9 @@ public class MainVerticle extends AbstractVerticle {
});
// Статическая раздача фронтенда
router.route("/*").handler(StaticHandler.create("webroot")
.setCachingEnabled(false)
.setIndexPage("index.html"));
// router.route("/*").handler(StaticHandler.create("webroot")
// .setCachingEnabled(false)
// .setIndexPage("index.html"));
return router;
}

View File

@@ -53,7 +53,7 @@ public class HealthCheckService {
.onFailure(err -> future.tryFail("DataBase ping failed: " + err.getMessage()));
});
// Регистрируем endpoint /health
router.get("/health").handler(healthCheckHandler);
// Регистрируем endpoint /api/health
router.get("/api/health").handler(healthCheckHandler);
}
}