version: '3.8' services: backend: build: context: . dockerfile: Dockerfile.backend container_name: dressed-for-success-backend hostname: backend ports: - "8000:8000" environment: - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/shop_db - DEBUG=0 - SECRET_KEY=supersecretkey - UPLOAD_DIRECTORY=/app/uploads depends_on: postgres: condition: service_healthy volumes: - ./backend/uploads:/app/uploads networks: app_network: aliases: - backend dns_search: . restart: always healthcheck: test: ["CMD", "curl", "--fail", "http://localhost:8000/" ] interval: 10s timeout: 5s retries: 3 start_period: 15s frontend: build: context: . dockerfile: Dockerfile.frontend container_name: dressed-for-success-frontend hostname: frontend expose: - "3000" environment: - NEXT_PUBLIC_API_URL=http://0.0.0.0:8000/api - NEXT_PUBLIC_BASE_URL=http://0.0.0.0:8000 - NODE_ENV=production depends_on: backend: condition: service_healthy networks: app_network: aliases: - frontend dns_search: . restart: always nginx: image: nginx:alpine container_name: dressed-for-success-nginx ports: - "80:80" # - "443:443" # Раскомментируйте для HTTPS volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./backend/uploads:/app/uploads:ro depends_on: - frontend - backend networks: - app_network restart: always postgres: image: postgres:15 container_name: dressed-for-success-db hostname: postgres environment: POSTGRES_DB: shop_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5434:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 networks: app_network: aliases: - postgres dns_search: . restart: always networks: app_network: driver: bridge volumes: postgres_data: driver: local backend_uploads: driver: local