version: "3" services: db: container_name: db build: ./db restart: unless-stopped healthcheck: test: ["CMD-SHELL", "PGPASSWORD=$$POSTGRES_PASSWORD psql -U $$POSTGRES_USER $$POSTGRES_DB -c 'SELECT 1'"] interval: 10s timeout: 10s retries: 10 start_period: 1m expose: - "5432" ports: - "5431:5432" env_file: - ./.env.sndev volumes: - ./anon.sql:/docker-entrypoint-initdb.d/anon.sql - db:/var/lib/postgresql/data app: container_name: app build: ./ restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 10s timeout: 10s retries: 10 start_period: 1m depends_on: db: condition: service_healthy restart: true opensearch: condition: service_healthy restart: true env_file: - ./.env.sndev expose: - "3000" ports: - "3000:3000" volumes: - ./:/app links: - db - opensearch worker: container_name: worker build: ./worker restart: unless-stopped depends_on: db: condition: service_healthy restart: true app: condition: service_healthy restart: true opensearch: condition: service_healthy restart: true env_file: - ./.env.sndev ports: - "8080:8080" volumes: - ./:/app links: - db - app - opensearch entrypoint: ["/bin/sh", "-c"] command: - npm run worker:dev imgproxy: container_name: imgproxy image: darthsim/imgproxy:v3.18.1 healthcheck: test: [ "CMD", "imgproxy", "health" ] interval: 10s timeout: 10s retries: 10 start_period: 1m restart: unless-stopped env_file: - ./.env.sndev expose: - "8080" ports: - "3001:8080" links: - app opensearch: image: opensearchproject/opensearch:latest container_name: opensearch healthcheck: test: ["CMD-SHELL", "curl -ku admin:admin --silent --fail localhost:9200/_cluster/health || exit 1"] interval: 10s timeout: 10s retries: 10 start_period: 1m restart: unless-stopped environment: - discovery.type=single-node - plugins.security.disabled=true ports: - 9200:9200 # REST API - 9600:9600 # Performance Analyzer volumes: - os:/usr/share/opensearch/data command: > bash -c ' set -m /usr/share/opensearch/opensearch-docker-entrypoint.sh & until curl -sS "http://localhost:9200/_cat/health?h=status" -ku admin:admin | grep -q "green\|yellow"; do echo "Waiting for OpenSearch to start..." sleep 1 done echo "OpenSearch started." curl -X PUT "http://localhost:9200/item" -ku admin:admin echo "OpenSearch index created." fg ' os-dashboard: image: opensearchproject/opensearch-dashboards:latest container_name: os-dashboard restart: unless-stopped depends_on: opensearch: condition: service_healthy restart: true environment: - opensearch.ssl.verificationMode=none - server.ssl.enabled=false - plugins.security.disabled=true - DISABLE_SECURITY_DASHBOARDS_PLUGIN=true - OPENSEARCH_HOSTS=http://opensearch:9200 ports: - 5601:5601 expose: - "5601" links: - opensearch volumes: db: os: