Files
booklore/example-docker/docker-compose.yml
renovate[bot] eace4fcbde chore(deps): update lscr.io/linuxserver/mariadb docker tag to v11.4.8 (#1862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 01:58:24 -07:00

49 lines
2.9 KiB
YAML

services:
booklore:
# Official Docker Hub image:
image: booklore/booklore:latest
# Or the GHCR image:
# 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
- 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
- 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".
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.
- ./bookdrop:/bookdrop # BookDrop folder. Files placed here are automatically detected and prepared for import.
restart: unless-stopped
mariadb:
image: lscr.io/linuxserver/mariadb:11.4.8
container_name: mariadb
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- MYSQL_ROOT_PASSWORD=super_secure_password # Use a strong password for the database's root user, should be different from MYSQL_PASSWORD
- MYSQL_DATABASE=booklore
- MYSQL_USER=booklore # Must match DATABASE_USERNAME defined in the booklore container
- MYSQL_PASSWORD=your_secure_password # Use a strong password; must match DATABASE_PASSWORD defined in the booklore container
volumes:
- ./config:/config
restart: unless-stopped
healthcheck:
test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost" ]
interval: 5s
timeout: 5s
retries: 10