version: '3.8' services: couchdb: image: couchdb:3.3 container_name: adopt-a-street-couchdb ports: - "5984:5984" - "4369:4369" - "9100:9100" environment: - COUCHDB_USER=${COUCHDB_USER:-admin} - COUCHDB_PASSWORD=${COUCHDB_PASSWORD:-admin} - COUCHDB_SECRET=${COUCHDB_SECRET:-change-this-secret-string} - ERL_FLAGS=+K true +A 4 volumes: - couchdb_data:/opt/couchdb/data - ./couchdb/local.d:/opt/couchdb/etc/local.d restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5984/_up"] interval: 30s timeout: 10s retries: 3 start_period: 40s couchdb-exporter: image: gesellix/couchdb-exporter:latest container_name: adopt-a-street-couchdb-exporter ports: - "9100:9100" environment: - COUCHDB_URL=http://localhost:5984 - COUCHDB_USER=${COUCHDB_USER:-admin} - COUCHDB_PASSWORD=${COUCHDB_PASSWORD:-admin} depends_on: couchdb: condition: service_healthy restart: unless-stopped backend: build: context: ./backend dockerfile: Dockerfile container_name: adopt-a-street-backend ports: - "5000:5000" environment: - COUCHDB_URL=${COUCHDB_URL:-http://couchdb:5984} - COUCHDB_DB_NAME=${COUCHDB_DB_NAME:-adopt-a-street} - COUCHDB_USER=${COUCHDB_USER:-admin} - COUCHDB_PASSWORD=${COUCHDB_PASSWORD:-admin} - JWT_SECRET=${JWT_SECRET:-change-this-jwt-secret-key} - PORT=${PORT:-5000} - NODE_ENV=${NODE_ENV:-development} - FRONTEND_URL=${FRONTEND_URL:-http://localhost:3000} - CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} - CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY} - CLOUDINARY_API_SECRET=${CLOUDINARY_API_SECRET} - STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY} - STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} volumes: - ./backend/uploads:/app/uploads depends_on: couchdb: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s frontend: build: context: ./frontend dockerfile: Dockerfile container_name: adopt-a-street-frontend ports: - "3000:80" environment: - REACT_APP_API_URL=http://localhost:5000 depends_on: backend: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:80"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: couchdb_data: driver: local networks: default: name: adopt-a-street-network