services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0 container_name: elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false - xpack.security.http.ssl.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - bootstrap.memory_lock=true ulimits: memlock: soft: -1 hard: -1 ports: - "9200:9200" - "9300:9300" volumes: - elasticsearch_data:/usr/share/elasticsearch/data networks: - control-room-network healthcheck: test: ["CMD-SHELL", "curl -s http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"\\|\"status\":\"yellow\"'"] interval: 10s timeout: 5s retries: 5 start_period: 20s restart: unless-stopped kibana: image: docker.elastic.co/kibana/kibana:8.11.0 container_name: kibana ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 depends_on: elasticsearch: condition: service_healthy networks: - control-room-network healthcheck: test: ["CMD", "curl", "-s", "-f", "http://localhost:5601/api/status"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped rabbitmq: image: rabbitmq:3.13-management-alpine container_name: rabbitmq ports: - "5672:5672" - "15672:15672" environment: - RABBITMQ_DEFAULT_USER=guest - RABBITMQ_DEFAULT_PASS=guest volumes: - rabbitmq_data:/var/lib/rabbitmq networks: - control-room-network healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 15s restart: unless-stopped control-room-app: build: context: . dockerfile: Dockerfile container_name: control-room-app ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod - SPRING_RABBITMQ_HOST=rabbitmq - SPRING_RABBITMQ_PORT=5672 - SPRING_RABBITMQ_USERNAME=guest - SPRING_RABBITMQ_PASSWORD=guest - SPRING_ELASTICSEARCH_URIS=http://elasticsearch:9200 depends_on: rabbitmq: condition: service_healthy elasticsearch: condition: service_healthy networks: - control-room-network restart: unless-stopped networks: control-room-network: driver: bridge volumes: elasticsearch_data: driver: local rabbitmq_data: driver: local