services: postgres: image: postgres:17-alpine container_name: Mediqux-DB environment: POSTGRES_DB: mediqux POSTGRES_USER: mediquxuser POSTGRES_PASSWORD: mediquxpass volumes: - /volume1/docker/mediqux/db:/var/lib/postgresql/data:rw healthcheck: test: ["CMD-SHELL", "pg_isready -U mediquxuser -d mediqux"] interval: 10s timeout: 5s retries: 5 backend: image: ghcr.io/dmjoh/mediqux/mediqux-backend:latest container_name: Mediqux-BACKEND environment: NODE_ENV: production DB_HOST: postgres DB_PORT: 5432 DB_NAME: mediqux DB_USER: mediquxuser DB_PASSWORD: mediquxpass JWT_SECRET: dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr FRONTEND_URL: mediqux.mariushosting.synology.me MAX_FILE_SIZE: 500MB UPLOAD_PATH: /app/uploads PUID: 1026 PGID: 100 ports: - 3019:3000 volumes: - /volume1/docker/mediqux/uploads:/app/uploads:rw depends_on: postgres: condition: service_healthy restart: on-failure:5 healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/api/health', (res) => process.exit(res.statusCode === 200 ? 0 : 1))"] interval: 30s timeout: 10s retries: 3 frontend: image: ghcr.io/dmjoh/mediqux/mediqux-frontend:latest container_name: Mediqux_frontend environment: MEDIQUX_API_URL: mediquxapi.mariushosting.synology.me/api ports: - 3018:80 depends_on: - backend restart: on-failure:5 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:80"] interval: 30s timeout: 10s retries: 3