stupa-pdf-api/docker-compose.watch.yml

102 lines
2.6 KiB
YAML

services:
db:
image: mysql:8.0
container_name: stupa_db
restart: unless-stopped
command:
[
"mysqld",
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_unicode_ci",
"--default-authentication-plugin=mysql_native_password",
]
environment:
MYSQL_DATABASE: ${MYSQL_DB:-stupa}
MYSQL_USER: ${MYSQL_USER:-stupa}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-secret}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootsecret}
healthcheck:
test:
[
"CMD-SHELL",
"mysqladmin ping -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD:-rootsecret} --silent",
]
interval: 10s
timeout: 5s
retries: 6
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
api:
build:
context: ./backend
dockerfile: Dockerfile.dev
network: host
container_name: stupa_api
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
# DB
MYSQL_HOST: db
MYSQL_PORT: 3306
MYSQL_DB: ${MYSQL_DB:-stupa}
MYSQL_USER: ${MYSQL_USER:-stupa}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-secret}
# Auth / Limits
MASTER_KEY: ${MASTER_KEY:-change_me}
RATE_IP_PER_MIN: ${RATE_IP_PER_MIN:-60}
RATE_KEY_PER_MIN: ${RATE_KEY_PER_MIN:-30}
# PDF-Templates (liegen im Image in /app/assets)
QSM_TEMPLATE: /app/assets/qsm.pdf
VSM_TEMPLATE: /app/assets/vsm.pdf
# Optional: TZ
TZ: ${TZ:-Europe/Berlin}
ports:
- "8000:8000"
# Healthcheck: ping FastAPI root
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8000/ || exit 1"]
interval: 10s
timeout: 5s
retries: 6
develop:
watch:
- action: sync
path: ./backend/src
target: /app/src
- action: rebuild
path: ./backend/requirements.txt
- action: sync
path: ./backend/assets
target: /app/assets
- action: sync
path: ./backend/latex-qsm
target: /app/latex-qsm
- action: sync
path: ./backend/latex-vsm
target: /app/latex-vsm
volumes:
- ./backend/src:/app/src
- ./backend/assets:/app/assets
- ./backend/latex-qsm:/app/latex-qsm
- ./backend/latex-vsm:/app/latex-vsm
adminer:
image: adminer:4
container_name: stupa_adminer
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
ADMINER_DEFAULT_SERVER: db
ports:
- "8080:8080"
volumes:
db_data: