name: iot-pretester-46-demo services: backend: build: context: . dockerfile: Dockerfile.backend container_name: iot-pretester-46-demo-backend restart: unless-stopped user: "1000:1000" ports: - "${BACKEND_PORT:-8000}:8000" volumes: - backend_data:/app/data - backend_logs:/app/logs - capture_uploads:/app/files/uploads - backend_staticfiles:/app/django_project/staticfiles environment: DEBUG: ${DEBUG:-False} SECRET_KEY: ${SECRET_KEY} ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost,127.0.0.1} DJANGO_SETTINGS_MODULE: IoTPreTester.settings DATABASE_PATH: /app/data/db.sqlite3 CAPTURE_UPLOAD_DIR: /app/files/uploads CAPTURE_PACKET_LIMIT: ${CAPTURE_PACKET_LIMIT:-0} CAPTURE_MAX_TEXT_PAYLOADS: ${CAPTURE_MAX_TEXT_PAYLOADS:-50000} CAPTURE_MAX_PAYLOAD_CHARS: ${CAPTURE_MAX_PAYLOAD_CHARS:-16384} ANALYZER_BENIGN_DOMAINS: ${ANALYZER_BENIGN_DOMAINS:-} CORS_ALLOW_ALL_ORIGINS: ${CORS_ALLOW_ALL_ORIGINS:-False} CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:3000} DJANGO_SUPERUSER_USERNAME: ${DJANGO_SUPERUSER_USERNAME:-admin} DJANGO_SUPERUSER_EMAIL: ${DJANGO_SUPERUSER_EMAIL:-admin@example.com} DJANGO_SUPERUSER_PASSWORD: ${DJANGO_SUPERUSER_PASSWORD} INIT_DATABASE: ${INIT_DATABASE:-true} GUNICORN_WORKERS: ${GUNICORN_WORKERS:-4} GUNICORN_TIMEOUT: ${GUNICORN_TIMEOUT:-600} LOG_LEVEL: ${LOG_LEVEL:-info} LOG_DIR: /app/logs networks: - demo-network healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s frontend: build: context: . dockerfile: Dockerfile.frontend args: NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:8000/api} container_name: iot-pretester-46-demo-frontend restart: unless-stopped user: "1000:1000" ports: - "${FRONTEND_PORT:-3000}:3000" environment: NODE_ENV: ${NODE_ENV:-production} NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:8000/api} HOSTNAME: 0.0.0.0 depends_on: backend: condition: service_healthy networks: - demo-network healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000/login"] interval: 30s timeout: 10s retries: 3 start_period: 20s networks: demo-network: driver: bridge volumes: backend_data: backend_logs: backend_staticfiles: capture_uploads: