version: '3.8' networks: app_network: driver: bridge services: nginx: build: ./frontend container_name: nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./certs/spotnet.xyz.chain.crt:/etc/nginx/spotnet.xyz.chain.crt:ro - ./certs/spotnet.xyz.key:/etc/nginx/spotnet.xyz.key:ro depends_on: - backend networks: - app_network backend: build: . restart: always volumes: - ./entrypoint.sh:/app/entrypoint.sh env_file: - .env depends_on: - db expose: - "8000" networks: - app_network db: image: postgres:14 container_name: postgres restart: always environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data networks: - app_network env_file: - .env healthcheck: test: [ "CMD-SHELL", "pg_isready -U ${DB_USER}" ] interval: 10s timeout: 5s retries: 5 celery: build: . command: celery -A spotnet_tracker.celery_config worker --loglevel=INFO volumes: - .:/app depends_on: - redis networks: - app_network celery_beat: build: . command: celery -A spotnet_tracker.celery_config beat --loglevel=INFO volumes: - .:/app depends_on: - redis networks: - app_network redis: image: redis:latest restart: always ports: - "6379:6379" volumes: - redis_data:/data networks: - app_network volumes: postgres_data: redis_data: