Files
mt-vet-temps/docker-compose.yml
T
2026-06-18 21:07:34 +01:00

81 lines
3.0 KiB
YAML

services:
db:
image: mysql:8.4
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE:-switchbot}
MYSQL_USER: ${MYSQL_USER:-switchbot}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-switchbot_password}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root_password}
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
web:
build: .
command: ["gunicorn", "--bind", "0.0.0.0:80", "app.web:app"]
environment:
DATABASE_URL: ${DATABASE_URL:-mysql+pymysql://${MYSQL_USER:-switchbot}:${MYSQL_PASSWORD:-switchbot_password}@db:3306/${MYSQL_DATABASE:-switchbot}}
SWITCHBOT_TOKEN: ${SWITCHBOT_TOKEN:-}
SWITCHBOT_SECRET: ${SWITCHBOT_SECRET:-}
COLLECT_INTERVAL_SECONDS: ${COLLECT_INTERVAL_SECONDS:-900}
APP_TIMEZONE: ${APP_TIMEZONE:-Europe/London}
FLASK_SECRET_KEY: ${FLASK_SECRET_KEY:-dev-only-secret}
REPORT_OUTPUT_DIR: ${REPORT_OUTPUT_DIR:-/tmp/switchbot-reports}
REPORT_SENDER_EMAIL: ${REPORT_SENDER_EMAIL:-}
REPORT_SENDER_NAME: ${REPORT_SENDER_NAME:-SwitchBot Temps}
SMTP2GO_API_KEY: ${SMTP2GO_API_KEY:-}
SMTP2GO_API_URL: ${SMTP2GO_API_URL:-https://api.smtp2go.com/v3/email/send}
SMTP2GO_TIMEOUT_SECONDS: ${SMTP2GO_TIMEOUT_SECONDS:-20}
REPORT_SCHEDULER_POLL_SECONDS: ${REPORT_SCHEDULER_POLL_SECONDS:-300}
depends_on:
db:
condition: service_healthy
networks:
- default
- webapps
report-scheduler:
build: .
command: ["python", "-m", "app.report_scheduler"]
environment:
DATABASE_URL: ${DATABASE_URL:-mysql+pymysql://${MYSQL_USER:-switchbot}:${MYSQL_PASSWORD:-switchbot_password}@db:3306/${MYSQL_DATABASE:-switchbot}}
APP_TIMEZONE: ${APP_TIMEZONE:-Europe/London}
REPORT_OUTPUT_DIR: ${REPORT_OUTPUT_DIR:-/tmp/switchbot-reports}
REPORT_SENDER_EMAIL: ${REPORT_SENDER_EMAIL:-}
REPORT_SENDER_NAME: ${REPORT_SENDER_NAME:-SwitchBot Temps}
SMTP2GO_API_KEY: ${SMTP2GO_API_KEY:-}
SMTP2GO_API_URL: ${SMTP2GO_API_URL:-https://api.smtp2go.com/v3/email/send}
SMTP2GO_TIMEOUT_SECONDS: ${SMTP2GO_TIMEOUT_SECONDS:-20}
REPORT_SCHEDULER_POLL_SECONDS: ${REPORT_SCHEDULER_POLL_SECONDS:-300}
depends_on:
db:
condition: service_healthy
restart: unless-stopped
collector:
build: .
command: ["python", "-m", "app.collector"]
environment:
DATABASE_URL: ${DATABASE_URL:-mysql+pymysql://${MYSQL_USER:-switchbot}:${MYSQL_PASSWORD:-switchbot_password}@db:3306/${MYSQL_DATABASE:-switchbot}}
SWITCHBOT_TOKEN: ${SWITCHBOT_TOKEN:-}
SWITCHBOT_SECRET: ${SWITCHBOT_SECRET:-}
COLLECT_INTERVAL_SECONDS: ${COLLECT_INTERVAL_SECONDS:-900}
APP_TIMEZONE: ${APP_TIMEZONE:-Europe/London}
HEALTHCHECK_URL: ${HEALTHCHECK_URL:-}
depends_on:
db:
condition: service_healthy
restart: unless-stopped
volumes:
mysql_data:
networks:
default:
webapps:
external: true