Squashed commit of the following:
commit 0d624137c2557c6eeb87020749e4977b821c2b5c Author: Adrien <adrien.cesaro@proton.me> Date: Thu Apr 9 11:55:22 2026 +0200 backend native image setup
This commit is contained in:
@@ -137,7 +137,7 @@ PictureGroup
|
||||
|
||||
## Stack
|
||||
|
||||
- **Backend**: Spring Boot 4.0.5 + Spring AI 2.0.0-M4, Java 21, Maven
|
||||
- **Backend**: Spring Boot 4.0.5 + Spring AI 2.0.0-M4, Java 25, Maven
|
||||
- **Frontend**: Vue.js 3 + Vite + TypeScript + Pinia + Axios
|
||||
- **Database**: PostgreSQL 16 + pgvector extension
|
||||
- **Auth**: HTTP Basic (single shared in-memory user)
|
||||
@@ -146,7 +146,7 @@ PictureGroup
|
||||
|
||||
See [specs/001-neuro-rag-learning/quickstart.md](specs/001-neuro-rag-learning/quickstart.md) for full instructions.
|
||||
|
||||
### Local Dev
|
||||
### Local Dev (JVM)
|
||||
|
||||
```bash
|
||||
# Start the database
|
||||
@@ -162,6 +162,55 @@ npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Native Image Build
|
||||
|
||||
Produces a GraalVM native binary packaged into a minimal Docker image via Jib.
|
||||
|
||||
**Prerequisite**: GraalVM 25 must be installed and set as `JAVA_HOME`.
|
||||
|
||||
```bash
|
||||
# Install GraalVM 25 CE via sdkman (one-time)
|
||||
sdk install java 25-graalce
|
||||
sdk use java 25-graalce
|
||||
|
||||
# Build native executable + Docker image (requires Docker daemon)
|
||||
cd backend
|
||||
mvn -Pnative package jib:dockerBuild -DskipTests
|
||||
```
|
||||
|
||||
The image `ai-teacher-backend:latest` will appear in your local Docker. It starts in under 1 second and uses significantly less memory than the JVM image.
|
||||
|
||||
### Run Native Stack (Docker Compose)
|
||||
|
||||
```bash
|
||||
# Copy and fill in secrets
|
||||
cp .env.example .env
|
||||
# edit .env — add OPENAI_API_KEY at minimum
|
||||
|
||||
# Start PostgreSQL + native backend
|
||||
docker compose -f docker-compose.native.yml up
|
||||
```
|
||||
|
||||
App available at `http://localhost:8080`.
|
||||
|
||||
### Build Pipeline (Native)
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
SRC["Source Code\n(Java 25)"]
|
||||
AOT["Spring Boot AOT\n(process-aot)"]
|
||||
NI["GraalVM native-image\n(native-maven-plugin)"]
|
||||
EXE["Native Executable\ntarget/ai-teacher-backend"]
|
||||
JIB["Jib\n(jib-native-image-extension)"]
|
||||
IMG["Docker Image\nai-teacher-backend:latest\n(distroless base)"]
|
||||
|
||||
SRC --> AOT
|
||||
AOT --> NI
|
||||
NI --> EXE
|
||||
EXE --> JIB
|
||||
JIB --> IMG
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
|
||||
#### Backend
|
||||
|
||||
Reference in New Issue
Block a user