84ced4478b
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
94 lines
3.3 KiB
YAML
94 lines
3.3 KiB
YAML
# Grimmory - E-könyvtár (a BookLore közösségi utódja): könyvek, olvasó, OPDS, Kobo és KOReader szinkron
|
|
# Domain: ${SUBDOMAIN}.${DOMAIN}
|
|
# Database: MariaDB 11.4 (the major upstream's own compose runs — `09` decision 42's rule; the official image, so
|
|
# MARIADB_AUTO_UPGRADE=1 as every catalog MariaDB sidecar, R-459)
|
|
# RAM: ~700M (mem_limit: 1408M total — app 1024M + db 384M) | Pi-compatible: Yes (amd64, arm64)
|
|
#
|
|
# Environment variables:
|
|
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
|
# HDD_PATH - A meghajtó, amelyen a könyvtár él
|
|
# DB_PASSWORD - Adatbázis jelszó (generált; csak a belső hálón)
|
|
# DB_ROOT_PASSWORD - Adatbázis root jelszó (generált; csak a belső hálón)
|
|
#
|
|
# Folders: the books in ${USERDATA_PATH}/media/grimmory (the household sees and fills it), the drop-in inbox in
|
|
# ${IMPORT_PATH}/grimmory (BookDrop: a file put there is offered for import), covers/cache in ${HDD_PATH}/appdata.
|
|
# Mirrors upstream's deploy/compose/docker-compose.yml, pinned; OIDC off, Swagger off.
|
|
|
|
services:
|
|
grimmory:
|
|
image: ghcr.io/grimmory-tools/grimmory:v3.5.0
|
|
container_name: grimmory
|
|
restart: unless-stopped
|
|
environment:
|
|
- TZ=Europe/Budapest
|
|
- USER_ID=1000
|
|
- GROUP_ID=1000
|
|
- DATABASE_URL=jdbc:mariadb://grimmory-db:3306/grimmory
|
|
- DATABASE_USERNAME=grimmory
|
|
- DATABASE_PASSWORD=${DB_PASSWORD}
|
|
# R-798: the API docs stay off. v3.5.0 reads API_DOCS_ENABLED (application.yaml: ${API_DOCS_ENABLED:false}); the
|
|
# SWAGGER_ENABLED the template used to set is read by nothing. Explicit, so a changed upstream default cannot open it.
|
|
- API_DOCS_ENABLED=false
|
|
- FORCE_DISABLE_OIDC=true
|
|
volumes:
|
|
- ${HDD_PATH}/appdata/grimmory/data:/app/data
|
|
- ${USERDATA_PATH}/media/grimmory:/books
|
|
- ${IMPORT_PATH}/grimmory:/bookdrop
|
|
networks:
|
|
- traefik-public
|
|
- grimmory-internal
|
|
depends_on:
|
|
grimmory-db:
|
|
condition: service_healthy
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 1024M
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:6060/api/v1/healthcheck"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 120s
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.grimmory.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)"
|
|
- "traefik.http.routers.grimmory.entrypoints=websecure"
|
|
- "traefik.http.routers.grimmory.tls=true"
|
|
- "traefik.http.routers.grimmory.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.grimmory.loadbalancer.server.port=6060"
|
|
|
|
grimmory-db:
|
|
image: mariadb:11.4
|
|
container_name: grimmory-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- TZ=Europe/Budapest
|
|
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
|
|
- MARIADB_DATABASE=grimmory
|
|
- MARIADB_USER=grimmory
|
|
- MARIADB_PASSWORD=${DB_PASSWORD}
|
|
- MARIADB_AUTO_UPGRADE=1
|
|
volumes:
|
|
- grimmory_db:/var/lib/mysql
|
|
networks:
|
|
- grimmory-internal
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 384M
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 30s
|
|
|
|
volumes:
|
|
grimmory_db:
|
|
|
|
networks:
|
|
traefik-public:
|
|
external: true
|
|
grimmory-internal:
|