Remove nginx and serve Angular directly from Spring Boot (#2662)

* feat: remove nginx and serve Angular directly from Spring Boot

* fix: handle null values in EnabledFields deserialization from persisted JSON

* fix(migration): auto-repair failed Flyway migrations on startup

* fix(migration): replace DB triggers with app-level orphan cleanup

* fix: restore default port to 6060 for backwards compatibility

* fix: align all port references to 6060 and add OPDS compression MIME types

* fix: resolve NG0101 recursive tick error in book browser selection

---------

Co-authored-by: acx10 <acx10@users.noreply.github.com>
This commit is contained in:
ACX
2026-02-08 15:02:25 -07:00
committed by GitHub
parent 843b64969c
commit bc7ba8b933
24 changed files with 172 additions and 219 deletions

View File

@@ -6,22 +6,19 @@ services:
# image: ghcr.io/booklore-app/booklore:latest
container_name: booklore
environment:
- USER_ID=0 # Modify this if the volume's ownership is not root
- GROUP_ID=0 # Modify this if the volume's ownership is not root
- USER_ID=1000 # Modify this if the volume's ownership is not root
- GROUP_ID=1000 # Modify this if the volume's ownership is not root
- TZ=Etc/UTC
- DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore # Only modify this if you're familiar with JDBC and your database setup
- DATABASE_USERNAME=booklore # Must match MYSQL_USER defined in the mariadb container
- DATABASE_PASSWORD=your_secure_password # Use a strong password; must match MYSQL_PASSWORD defined in the mariadb container
- BOOKLORE_PORT=6060 # Port BookLore listens on inside the container; must match container port below
- DATABASE_PASSWORD=your_secure_password # Use a strong password; must match MYSQL_PASSWORD defined in the mariadb container
- SWAGGER_ENABLED=false # Enable or disable Swagger UI (API docs). Set to 'true' to allow access; 'false' to block access (recommended for production).
- FORCE_DISABLE_OIDC=false # Set to 'true' to force-disable OIDC and allow internal login, regardless of UI config
depends_on:
mariadb:
condition: service_healthy
ports:
- "6060:6060" # HostPort:ContainerPort → Keep both numbers the same, and also ensure the container port matches BOOKLORE_PORT, no exceptions.
# All three (host port, container port, BOOKLORE_PORT) must be identical for BookLore to function properly.
# Example: To expose on host port 7070, set BOOKLORE_PORT=7070 and use "7070:7070".
- "6060:6060" # HostPort:ContainerPort — container port is 6060 by default (configurable via BOOKLORE_PORT env var)
volumes:
- ./data:/app/data # Application data (settings, metadata, cache, etc.). Persist this folder to retain your library state across container restarts.
- ./books:/books # Primary book library folder. Mount your collection here so BookLore can access and organize your books.