diff --git a/backend/Dockerfile b/backend/Dockerfile index 1fdc57d8..709f2b43 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,8 +1,9 @@ -# Wir nutzen Java 21 (LTS), da Spring Boot 3 das empfiehlt -FROM mcr.microsoft.com/devcontainers/java:1-21-bullseye +FROM eclipse-temurin:21-jdk-alpine -# Optional: Zusätzliche OS-Pakete installieren -# RUN apt-get update && apt-get install -y +WORKDIR /app -# Port für Spring Boot EXPOSE 8080 + +# Source code and mvnw are mounted via docker-compose volume at runtime. +# Maven dependencies are cached in a named volume (~/.m2). +CMD ["./mvnw", "spring-boot:run"] diff --git a/docker-compose.yml b/docker-compose.yml index f1e956a3..f9008b4c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,11 +64,11 @@ services: context: ./backend dockerfile: Dockerfile container_name: archive-backend - command: sleep infinity restart: unless-stopped volumes: - - .:/workspaces/familienarchiv:cached - - ./import:/import # Mappt den lokalen Ordner "import-data" auf "/import" im Container + - ./backend:/app + - ./import:/import + - maven_cache:/root/.m2 depends_on: db: condition: service_healthy @@ -78,16 +78,21 @@ services: SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB} SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER} SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD} - # MinIO Konfiguration für Spring Boot (S3) S3_ENDPOINT: http://minio:9000 S3_ACCESS_KEY: ${MINIO_ROOT_USER} S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD} S3_BUCKET_NAME: ${MINIO_DEFAULT_BUCKETS} - S3_REGION: us-east-1 # MinIO Standard + S3_REGION: us-east-1 ports: - "${PORT_BACKEND}:8080" networks: - archive-net + healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:8080/actuator/health | grep -q UP || exit 1"] + interval: 15s + timeout: 5s + retries: 10 + start_period: 60s # --- Frontend: SvelteKit (Dev Server) --- frontend: @@ -102,7 +107,7 @@ services: minio: condition: service_healthy backend: - condition: service_started + condition: service_healthy volumes: - ./frontend:/app # Keep container's node_modules separate from host to avoid OS binary conflicts @@ -123,3 +128,4 @@ networks: volumes: frontend_node_modules: + maven_cache: