version: '3.8' services: db: image: docker.arvancloud.ir/library/postgres:16-alpine container_name: canino_db restart: always environment: POSTGRES_USER: canino POSTGRES_PASSWORD: caninopassword POSTGRES_DB: caninodb ports: - "5433:5432" volumes: - postgres_data:/var/lib/postgresql/data redis: image: docker.arvancloud.ir/library/redis:7-alpine container_name: canino_redis restart: always ports: - "16379:6379" backend: build: context: ./backend dockerfile: Dockerfile container_name: canino_backend restart: always environment: - DATABASE_URL=postgresql://canino:caninopassword@db:5432/caninodb?schema=public - REDIS_HOST=redis - REDIS_PORT=6379 - PORT=3000 ports: - "3000:3000" depends_on: - db - redis frontend: build: context: . dockerfile: Dockerfile container_name: canino_frontend restart: always ports: - "3001:8080" depends_on: - backend prometheus: image: docker.arvancloud.ir/prom/prometheus:v2.51.0 container_name: canino_prometheus restart: always volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" depends_on: - backend grafana: image: docker.arvancloud.ir/grafana/grafana:10.4.1 container_name: canino_grafana restart: always ports: - "3002:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin depends_on: - prometheus volumes: postgres_data: