services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: port_nimara_crm POSTGRES_USER: ${DB_USER:-crm} POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data - ./docker/postgres/init.sql:/docker-entrypoint-initdb.d/01-init.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-crm} -d port_nimara_crm"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - internal redis: image: redis:7-alpine command: redis-server --requirepass ${REDIS_PASSWORD} --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redisdata:/data healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - internal crm-app: image: code.letsbe.solutions/letsbe/pn-new-crm/crm-app:latest env_file: .env ports: - "7100:3000" depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"] interval: 15s timeout: 5s retries: 3 restart: unless-stopped networks: - internal crm-worker: image: code.letsbe.solutions/letsbe/pn-new-crm/crm-worker:latest env_file: .env depends_on: postgres: condition: service_healthy redis: condition: service_healthy restart: unless-stopped networks: - internal volumes: pgdata: redisdata: networks: internal: driver: bridge