82 lines
2.0 KiB
YAML
82 lines
2.0 KiB
YAML
version: "3.9"
|
|
|
|
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: .
|
|
dockerfile: Dockerfile
|
|
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
|
|
|
|
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:
|