services: postgres: image: postgres:16-alpine container_name: copykar_postgres restart: unless-stopped entrypoint: ["su-exec", "postgres", "postgres"] environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DB:-copykar} LD_PRELOAD: /usr/local/lib/libfakestat.so ports: - "5432:5432" volumes: - ./monitoring/postgres/libfakestat_musl.so:/usr/local/lib/libfakestat.so:ro - ./data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-copykar}"] interval: 5s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: copykar_redis restart: unless-stopped entrypoint: ["redis-server"] command: ["--protected-mode", "no", "--dir", "/data", "--save", "60", "1"] ports: - "6379:6379" volumes: - ./data/redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 copykar: image: copykar:latest build: context: . dockerfile: Dockerfile container_name: copykar_app restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy ports: - "8008:8008" env_file: - .env extra_hosts: - "host.docker.internal:host-gateway" volumes: - ./data/app:/app/data - ./data/sessions:/app/sessions - /home:/host_os/home:ro - /projects:/host_os/projects:ro - /run/media:/host_os/media:ro prometheus: build: context: ./monitoring/prometheus container_name: copykar_prometheus restart: unless-stopped volumes: - ./data/prometheus:/prometheus ports: - "9090:9090" grafana: build: context: ./monitoring/grafana container_name: copykar_grafana restart: unless-stopped environment: - GF_SECURITY_ADMIN_USER=${GRAFANA_USER:-admin} - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} - GF_USERS_ALLOW_SIGN_UP=false ports: - "3005:3000" volumes: - ./data/grafana:/var/lib/grafana depends_on: - prometheus pgadmin: image: dpage/pgadmin4:latest container_name: copykar_pgadmin restart: unless-stopped environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@copykar.com} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} PGADMIN_CONFIG_SERVER_MODE: 'False' ports: - "5050:80" volumes: - ./data/pgadmin:/var/lib/pgadmin depends_on: postgres: condition: service_healthy