services: db: image: postgres:15-alpine container_name: OurSchool-DB hostname: ourschool-db healthcheck: test: ["CMD", "pg_isready", "-q", "-d", "ourschool", "-U", "ourschooluser"] timeout: 45s interval: 10s retries: 10 security_opt: - no-new-privileges:true environment: TZ: Europe/Bucharest POSTGRES_DB: ourschool POSTGRES_USER: ourschooluser POSTGRES_PASSWORD: ourschoolpass volumes: - /volume1/docker/ourschooldb:/var/lib/postgresql/data:rw restart: on-failure:5 backend: image: ghcr.io/dgazr/ourschool-backend:1.0.0-beta.2 container_name: OurSchool-Backend security_opt: - no-new-privileges:true user: 0:0 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 15s timeout: 10s retries: 5 start_period: 30s environment: TZ: Europe/Bucharest DATABASE_URL: postgresql+psycopg://ourschooluser:ourschoolpass@ourschool-db:5432/ourschool DATABASE_HOST: ourschool-db DATABASE_PORT: 5432 DATABASE_NAME: ourschool DATABASE_USER: ourschooluser DATABASE_PASSWORD: ourschoolpass SECRET_KEY: 09c29b750ab22aed045ebea4a94442f304318688e075b5d468932d776fc6d72b ALGORITHM: HS256 ACCESS_TOKEN_EXPIRE_MINUTES: 30 BACKEND_HOST: 0.0.0.0 BACKEND_PORT: 8000 LOG_LEVEL: INFO LOG_FORMAT: json ALLOWED_ORIGINS: http://192.168.1.18:4173 VITE_API_BASE_URL: http://192.168.1.18:4173 depends_on: db: condition: service_healthy ports: - 8006:8000 restart: on-failure:5 frontend: image: ghcr.io/dgazr/ourschool-frontend:1.0.0-beta.2 container_name: OurSchool-FRONTEND healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:80"] interval: 30s timeout: 10s retries: 3 start_period: 10s security_opt: - no-new-privileges:true user: 0:0 environment: TZ: Europe/Bucharest depends_on: backend: condition: service_started ports: - 4173:80 restart: on-failure:5