Files
SE-LTD/docker-compose.yml
T

221 lines
5.8 KiB
YAML

services:
mariadb:
image: mariadb:11.4
container_name: seltd-mariadb
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-SE3112}
MARIADB_ROOT_HOST: mariadb
MARIADB_DATABASE: wago
MARIADB_USER: wago
MARIADB_PASSWORD: ${MARIADB_PASSWORD:-3112}
ports:
- "3306:3306"
volumes:
- mariadb_data:/var/lib/mysql
- ./docker/mariadb/init:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 15s
timeout: 10s
retries: 10
redis:
image: redis:7.4-alpine
container_name: seltd-redis
restart: unless-stopped
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD:?Set REDIS_PASSWORD in .env}
command: ["sh", "-c", "exec redis-server /usr/local/etc/redis/redis.conf --requirepass \"$$REDIS_PASSWORD\""]
volumes:
- redis_data:/data
- ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:ro
healthcheck:
test: ["CMD-SHELL", "redis-cli -a \"$$REDIS_PASSWORD\" ping | grep -q PONG"]
interval: 10s
timeout: 5s
retries: 10
api:
build:
context: ./api
container_name: seltd-api
restart: unless-stopped
environment:
PORT: 8080
DB_HOST: mariadb
DB_PORT: 3306
DB_NAME: wago
DB_USER: root
DB_PASSWORD: ${MARIADB_ROOT_PASSWORD:-SE3112}
DB_PASSWORD_FALLBACK: ${DB_PASSWORD_FALLBACK:-root}
REDIS_URL: redis://:${REDIS_PASSWORD:?Set REDIS_PASSWORD in .env}@redis:6379/0
JWT_SECRET: ${JWT_SECRET:-change-me}
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@example.com}
ADMIN_PASSWORD: ${ADMIN_PASSWORD:-ChangeMe123!}
ADMIN_NAME: ${ADMIN_NAME:-System Admin}
CORS_ORIGIN: ${CORS_ORIGIN:-*}
ports:
- "18080:8080"
depends_on:
mariadb:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/api/health > /dev/null || exit 1"]
interval: 15s
timeout: 5s
retries: 5
web:
build:
context: ./web
container_name: seltd-web
restart: unless-stopped
environment:
VITE_API_PORT: ${VITE_API_PORT:-18080}
ports:
- "5173:5173"
depends_on:
api:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5173/ > /dev/null || exit 1"]
interval: 15s
timeout: 5s
retries: 5
collector:
build:
context: ./collector
container_name: seltd-collector
restart: unless-stopped
environment:
PORT: 18110
DB_HOST: mariadb
DB_PORT: 3306
DB_NAME: wago
DB_USER: root
DB_PASSWORD: ${MARIADB_ROOT_PASSWORD:-SE3112}
POLL_TICK_MS: ${POLL_TICK_MS:-1000}
BACNET_COLLECTOR_URL: ${BACNET_COLLECTOR_URL:-http://172.17.0.1:18111}
ports:
- "18110:18110"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- collector_data:/app/data
depends_on:
mariadb:
condition: service_healthy
bacnet-collector:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:18110/health > /dev/null || exit 1"]
interval: 15s
timeout: 5s
retries: 5
symcon-collector:
build:
context: ./symcon-collector
container_name: seltd-symcon-collector
restart: unless-stopped
environment:
DB_HOST: mariadb
DB_PORT: 3306
DB_NAME: wago
DB_USER: root
DB_PASSWORD: ${MARIADB_ROOT_PASSWORD:-SE3112}
SOURCES_FILE: /app/collector-data/sources.json
SYMCON_POLL_TICK_MS: ${SYMCON_POLL_TICK_MS:-1000}
SYMCON_MAX_CONCURRENCY: ${SYMCON_MAX_CONCURRENCY:-4}
volumes:
- collector_data:/app/collector-data:ro
depends_on:
mariadb:
condition: service_healthy
collector:
condition: service_started
bacnet-collector:
build:
context: ./bacnet-collector
container_name: seltd-bacnet-collector
restart: unless-stopped
environment:
PORT: 18111
BACNET_SCAN_TIMEOUT: ${BACNET_SCAN_TIMEOUT:-12000}
BACNET_POINT_LIMIT: ${BACNET_POINT_LIMIT:-2000}
BACNET_BROADCAST_FALLBACKS: ${BACNET_BROADCAST_FALLBACKS:-}
BACNET_UNICAST_DELAY_MS: ${BACNET_UNICAST_DELAY_MS:-120}
network_mode: "host"
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:18111/health > /dev/null || exit 1"]
interval: 15s
timeout: 5s
retries: 5
runner:
build:
context: ./runner
container_name: seltd-runner
restart: unless-stopped
environment:
REDIS_URL: redis://:${REDIS_PASSWORD:?Set REDIS_PASSWORD in .env}@redis:6379/0
DB_HOST: mariadb
DB_PORT: 3306
DB_NAME: wago
DB_USER: root
DB_PASSWORD: ${MARIADB_ROOT_PASSWORD:-SE3112}
EXPORT_DIR: /exports
RUNNER_TICK_MS: ${RUNNER_TICK_MS:-1000}
RUNNER_TIMEZONE: ${RUNNER_TIMEZONE:-Europe/Berlin}
volumes:
- runner_exports:/exports
depends_on:
mariadb:
condition: service_healthy
redis:
condition: service_healthy
dockhand:
image: fnsys/dockhand:latest
container_name: seltd-dockhand
restart: unless-stopped
ports:
- "3008:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- dockhand_data:/app/data
cadvisor:
image: ghcr.io/google/cadvisor:v0.60.2
container_name: seltd-cadvisor
restart: unless-stopped
privileged: true
ports:
- "9090:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
devices:
- /dev/kmsg:/dev/kmsg
volumes:
mariadb_data:
redis_data:
collector_data:
runner_exports:
dockhand_data: