up docker-compose.yml
+ node js in gradle
This commit is contained in:
@@ -5,6 +5,16 @@ plugins {
|
|||||||
java
|
java
|
||||||
application
|
application
|
||||||
id("com.gradleup.shadow") version "9.2.2"
|
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"
|
group = "com.example"
|
||||||
@@ -75,6 +85,17 @@ tasks.withType<JavaExec> {
|
|||||||
args = listOf(mainVerticleName)
|
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") {
|
tasks.register("collectAllDependencies") {
|
||||||
group = "project"
|
group = "project"
|
||||||
description = "Сбор всех зависимостей для офлайн работы"
|
description = "Сбор всех зависимостей для офлайн работы"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
db:
|
iiko-db:
|
||||||
image: mariadb:12.2.2
|
image: mariadb:12.2.2
|
||||||
container_name: mariadb
|
container_name: iiko-mariadb
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
user: "1000:1000"
|
user: "1000:1000"
|
||||||
environment:
|
environment:
|
||||||
@@ -18,9 +18,9 @@ services:
|
|||||||
- $PWD/app/mariadb:/var/lib/mysql
|
- $PWD/app/mariadb:/var/lib/mysql
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
|
||||||
pma:
|
iiko-pma:
|
||||||
image: phpmyadmin:5.2.3
|
image: phpmyadmin:5.2.3
|
||||||
container_name: phpmyadmin
|
container_name: iiko-phpmyadmin
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -33,9 +33,9 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "7102:80"
|
- "7102:80"
|
||||||
|
|
||||||
redis:
|
iiko-redis:
|
||||||
image: redis:latest
|
image: redis:latest
|
||||||
container_name: redis
|
container_name: iiko-redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
user: "1000:1000"
|
user: "1000:1000"
|
||||||
environment:
|
environment:
|
||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
- $PWD/app/redis:/data
|
- $PWD/app/redis:/data
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
|
||||||
app:
|
iiko-app:
|
||||||
build: .
|
build: .
|
||||||
container_name: iiko-app
|
container_name: iiko-app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -58,11 +58,11 @@ services:
|
|||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
environment:
|
environment:
|
||||||
DATABASE__HOST: db
|
DATABASE__HOST: iiko-db
|
||||||
DATABASE__PORT: 3306
|
DATABASE__PORT: 3306
|
||||||
DATABASE__DATABASE: app_db
|
DATABASE__DATABASE: app_db
|
||||||
DATABASE__USER: app_user
|
DATABASE__USER: app_user
|
||||||
DATABASE__PASSWORD: app_pass
|
DATABASE__PASSWORD: app_pass
|
||||||
REDIS__HOST: redis
|
REDIS__HOST: iiko-redis
|
||||||
REDIS__PORT: 6379
|
REDIS__PORT: 6379
|
||||||
SERVER__PORT: 7104
|
SERVER__PORT: 7104
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ public class MainVerticle extends AbstractVerticle {
|
|||||||
.onFailure(err -> {
|
.onFailure(err -> {
|
||||||
log.error("Failed to initialize database", err);
|
log.error("Failed to initialize database", err);
|
||||||
startPromise.fail(err);
|
startPromise.fail(err);
|
||||||
return;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Router router = initRouter();
|
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
|
// Health Checks
|
||||||
HealthCheckService healthCheckService = new HealthCheckService(vertx, redis, db);
|
HealthCheckService healthCheckService = new HealthCheckService(vertx, redis, db);
|
||||||
healthCheckService.registerHealthCheck(router);
|
healthCheckService.registerHealthCheck(router);
|
||||||
@@ -128,17 +143,15 @@ public class MainVerticle extends AbstractVerticle {
|
|||||||
router.route("/api/admin/*").handler(authHandler::requireAuth);
|
router.route("/api/admin/*").handler(authHandler::requireAuth);
|
||||||
|
|
||||||
// Получение списка пользователей
|
// Получение списка пользователей
|
||||||
router.get("/api/admin/users").handler(rc -> {
|
router.get("/api/admin/users").handler(rc -> userService.getAllUsers().onComplete(ar -> {
|
||||||
userService.getAllUsers().onComplete(ar -> {
|
if (ar.succeeded()) {
|
||||||
if (ar.succeeded()) {
|
rc.response()
|
||||||
rc.response()
|
.putHeader("Content-Type", "application/json")
|
||||||
.putHeader("Content-Type", "application/json")
|
.end(ar.result().encode());
|
||||||
.end(ar.result().encode());
|
} else {
|
||||||
} else {
|
rc.response().setStatusCode(500).end(ar.cause().getMessage());
|
||||||
rc.response().setStatusCode(500).end(ar.cause().getMessage());
|
}
|
||||||
}
|
}));
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Получение текущего пользователя
|
// Получение текущего пользователя
|
||||||
router.get("/api/admin/me").handler(rc -> {
|
router.get("/api/admin/me").handler(rc -> {
|
||||||
@@ -156,9 +169,9 @@ public class MainVerticle extends AbstractVerticle {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Статическая раздача фронтенда
|
// Статическая раздача фронтенда
|
||||||
router.route("/*").handler(StaticHandler.create("webroot")
|
// router.route("/*").handler(StaticHandler.create("webroot")
|
||||||
.setCachingEnabled(false)
|
// .setCachingEnabled(false)
|
||||||
.setIndexPage("index.html"));
|
// .setIndexPage("index.html"));
|
||||||
|
|
||||||
return router;
|
return router;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class HealthCheckService {
|
|||||||
.onFailure(err -> future.tryFail("DataBase ping failed: " + err.getMessage()));
|
.onFailure(err -> future.tryFail("DataBase ping failed: " + err.getMessage()));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Регистрируем endpoint /health
|
// Регистрируем endpoint /api/health
|
||||||
router.get("/health").handler(healthCheckHandler);
|
router.get("/api/health").handler(healthCheckHandler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user