version: '3.8' services: postgres: image: postgres:15-alpine environment: POSTGRES_USER: theorder POSTGRES_PASSWORD: theorder_dev POSTGRES_DB: theorder_dev ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U theorder"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 opensearch: image: opensearchproject/opensearch:2.11.0 environment: - discovery.type=single-node - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" - "DISABLE_SECURITY_PLUGIN=true" ports: - "9200:9200" - "9600:9600" volumes: - opensearch_data:/usr/share/opensearch/data healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"] interval: 30s timeout: 10s retries: 5 opensearch-dashboards: image: opensearchproject/opensearch-dashboards:2.11.0 ports: - "5601:5601" environment: - 'OPENSEARCH_HOSTS=["http://opensearch:9200"]' - "DISABLE_SECURITY_DASHBOARDS_PLUGIN=true" depends_on: opensearch: condition: service_healthy volumes: postgres_data: redis_data: opensearch_data: