version: "3" services: db: container_name: db image: postgres:13.2 restart: always expose: - "5432" ports: - "5431:5432" env_file: - ./.env.sample volumes: - db:/var/lib/postgresql/data app: container_name: app build: ./ healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 10s timeout: 10s retries: 10 start_period: 1m30s depends_on: - db env_file: - ./.env.sample ports: - "3000:3000" volumes: - ./:/app links: - db - opensearch worker: container_name: worker build: ./worker depends_on: db: condition: service_started app: condition: service_healthy env_file: - ./.env.sample ports: - "8080:8080" volumes: - ./:/app links: - db - app - opensearch entrypoint: ["/bin/sh", "-c"] command: - npm run worker imgproxy: container_name: imgproxy image: darthsim/imgproxy:v3.18.1 healthcheck: test: [ "CMD", "imgproxy", "health" ] timeout: 10s interval: 10s retries: 3 restart: always env_file: - ./.env.sample expose: - "8080" ports: - "3001:8080" links: - app opensearch: image: opensearchproject/opensearch:latest container_name: opensearch environment: - discovery.type=single-node - plugins.security.disabled=true ports: - 9200:9200 # REST API - 9600:9600 # Performance Analyzer volumes: - os:/usr/share/opensearch/data - ./:/app 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 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: