# ============================================================================= # IGNY8 STAGING ENVIRONMENT COMPOSE FILE # ============================================================================= # Runs alongside production on the same server using different: # - Ports, database, Redis DB, domains, and container names # ============================================================================= # # Usage: # docker compose -f docker-compose.staging.yml -p igny8-staging up -d # docker compose -f docker-compose.staging.yml -p igny8-staging down # docker compose -f docker-compose.staging.yml -p igny8-staging logs -f # ============================================================================= name: igny8-staging services: igny8_staging_backend: image: igny8-backend:staging container_name: igny8_staging_backend restart: always working_dir: /app ports: - "0.0.0.0:8012:8010" environment: DJANGO_ENV: staging DB_HOST: postgres DB_NAME: igny8_staging_db DB_USER: igny8 DB_PASSWORD: igny8pass REDIS_HOST: redis REDIS_PORT: "6379" REDIS_DB: "1" USE_SECURE_COOKIES: "True" USE_SECURE_PROXY_HEADER: "True" DEBUG: "False" volumes: - /data/app/igny8/backend:/app:rw - /data/app/igny8:/data/app/igny8:rw - /var/run/docker.sock:/var/run/docker.sock:ro - /data/logs/staging:/app/logs:rw env_file: - .env.staging healthcheck: test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8010/api/v1/system/status/').read()\" || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 40s command: ["gunicorn", "igny8_core.wsgi:application", "--bind", "0.0.0.0:8010", "--workers", "2", "--timeout", "120"] networks: [igny8_net] labels: - "com.docker.compose.project=igny8-staging" - "com.docker.compose.service=igny8_staging_backend" igny8_staging_frontend: image: igny8-frontend-dev:staging container_name: igny8_staging_frontend restart: always ports: - "0.0.0.0:8024:5173" environment: VITE_BACKEND_URL: "https://staging-api.igny8.com/api" VITE_ENV: "staging" volumes: - /data/app/igny8/frontend:/app:rw depends_on: igny8_staging_backend: condition: service_healthy networks: [igny8_net] labels: - "com.docker.compose.project=igny8-staging" - "com.docker.compose.service=igny8_staging_frontend" igny8_staging_marketing_dev: image: igny8-marketing-dev:staging container_name: igny8_staging_marketing_dev restart: always ports: - "0.0.0.0:8026:5174" environment: VITE_BACKEND_URL: "https://staging-api.igny8.com/api" VITE_ENV: "staging" volumes: - /data/app/igny8/frontend:/app:rw networks: [igny8_net] labels: - "com.docker.compose.project=igny8-staging" - "com.docker.compose.service=igny8_staging_marketing_dev" igny8_staging_celery_worker: image: igny8-backend:staging container_name: igny8_staging_celery_worker restart: always working_dir: /app environment: DJANGO_ENV: staging DB_HOST: postgres DB_NAME: igny8_staging_db DB_USER: igny8 DB_PASSWORD: igny8pass REDIS_HOST: redis REDIS_PORT: "6379" REDIS_DB: "1" C_FORCE_ROOT: "true" volumes: - /data/app/igny8/backend:/app:rw - /data/logs/staging:/app/logs:rw env_file: - .env.staging command: ["celery", "-A", "igny8_core", "worker", "--loglevel=info", "--concurrency=2"] depends_on: igny8_staging_backend: condition: service_healthy networks: [igny8_net] labels: - "com.docker.compose.project=igny8-staging" - "com.docker.compose.service=igny8_staging_celery_worker" igny8_staging_celery_beat: image: igny8-backend:staging container_name: igny8_staging_celery_beat restart: always working_dir: /app environment: DJANGO_ENV: staging DB_HOST: postgres DB_NAME: igny8_staging_db DB_USER: igny8 DB_PASSWORD: igny8pass REDIS_HOST: redis REDIS_PORT: "6379" REDIS_DB: "1" C_FORCE_ROOT: "true" volumes: - /data/app/igny8/backend:/app:rw - /data/logs/staging:/app/logs:rw env_file: - .env.staging command: ["celery", "-A", "igny8_core", "beat", "--loglevel=info", "--scheduler", "django_celery_beat.schedulers:DatabaseScheduler"] depends_on: igny8_staging_backend: condition: service_healthy networks: [igny8_net] labels: - "com.docker.compose.project=igny8-staging" - "com.docker.compose.service=igny8_staging_celery_beat" networks: igny8_net: external: true