最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java - Elasticsearch Spring Docker CONNECTION FAILS - Stack Overflow

programmeradmin0浏览0评论

My microservice app runs correctly locally. Im trying to dockerize it but my product-service fails to connect elasticsearch.

Docker-compose.yml

services:
  config-service:
    container_name: config-service
    image: config-service:latest
    ports:
      - "8888:8888"
    networks:
      - microservices-net
    restart: on-failure:1
  discovery-service:
    container_name: discovery-service
    image: discovery-service:latest
    environment:
      - DISCOVERY_SERVICE=discovery-service
      - CONFIG_SERVER_HOST=config-service
    depends_on:
      - config-service
    ports:
      - "8761:8761"
    networks:
      - microservices-net
    restart: on-failure:1
  gateway-service:
    container_name: gateway-service
    image: gateway-service:latest
    environment:
      - CONFIG_SERVER_HOST=config-service
    depends_on:
      - config-service
    ports:
      - "8222:8222"
    networks:
      - microservices-net
    restart: on-failure:1
  mailer-service:
    container_name: mailer-service
    image: mailer-service:latest
    environment:
      - CONFIG_SERVER_HOST=config-service
      - Mailer_MYSQL=mailer-sql
      - MAILER_MYSQL_PORT=3306
    depends_on:
      - config-service
      - mailer-sql
    ports:
      - "8085:8085"
    networks:
      - microservices-net
    restart: on-failure:1
  inventory-service:
    container_name: inventory-service
    image: inventory-service:latest
    environment:
      - CONFIG_SERVER_HOST=config-service
      - INVENTORY_MYSQL=inventory-mysql
      - INVENTORY_MYSQL_PORT=3306
    depends_on:
      - config-service
      - inventory-mysql
    ports:
      - "8083:8083"
    networks:
      - microservices-net
    restart: on-failure:1
  order-service:
    container_name: order-service
    image: order-service:latest
    environment:
      - CONFIG_SERVER_HOST=config-service
      - ORDER_MYSQL=order-mysql
      - ORDER_MYSQL_PORT=3306
    depends_on:
      - config-service
      - order-mysql
    ports:
      - "8082:8082"
    networks:
      - microservices-net
    restart: on-failure:1
  product-service:
    container_name: product-service
    image: product-service:latest
    environment:
      - CONFIG_SERVER_HOST=config-service
      - PRODUCT_MONGO=produit-mongo
      - PRODUCT_ELASTIC=elasticsearch-service
      - PRODUCT_REDIS=produit-redis
    depends_on:
      elasticsearch-service:
            condition: service_healthy
    ports:
      - "8081:8081"
    networks:
      - microservices-net
    restart: on-failure:1
  kibana:
    image: docker.elastic.co/kibana/kibana:7.17.27
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch-service:9200
      - ELASTIC_PASSWORD=786919
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch-service
    networks:
      - microservices-net
  user-service:
    container_name: user-service
    image: user-service:latest
    environment:
      - CONFIG_SERVER_HOST=config-service
      - USER_MYSQL=user-mysql
      - USER_MYSQL_PORT=3306
    depends_on:
      - config-service
      - user-mysql
#      - keycloak
    ports:
      - "8084:8084"
    networks:
      - microservices-net
    restart: on-failure:1
  mailer-sql:
    image: mysql:8
    container_name: mailer-mysql
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mailer-service
    volumes:
      - mailer-mysql:/data
    networks:
      - microservices-net
  inventory-mysql:
    image: mysql:8
    container_name: inventory-mysql
    ports:
      - "3308:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: inventory-service
    volumes:
      - inventory-mysql:/data
    networks:
      - microservices-net
  order-mysql:
    image: mysql:8
    container_name: order-mysql
    ports:
      - "3309:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: order-service
    volumes:
      - order-mysql:/data
    networks:
      - microservices-net
  user-mysql:
    image: mysql:8
    container_name: user-mysql
    ports:
      - "3310:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: user-service
    volumes:
      - user-mysql:/data
    networks:
      - microservices-net
  produit-mongo:
    image: mongo
    container_name: produit-mongo
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin
    ports:
      - 27017:27017
    volumes:
      - produit-mongo:/data
    networks:
      - microservices-net
  produit-redis:
    image: redis:7
    container_name: produit-redis
    ports:
      - "6379:6379"
    volumes:
      - produit-redis:/data
    networks:
      - microservices-net
  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    volumes:
      - rabbitmq:/data
    ports:
      - "5672:5672"
      - "15672:15672"
    networks:
      - microservices-net
  elasticsearch-service:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.27
    container_name: elasticsearch-service
    ports:
      - "9200:9200"
      - '9300:9300'
    environment:
      - xpack.security.enabled=false
    #  - ELASTIC_PASSWORD=786919
    #  - xpack.security.authc.api_key.enabled=true
      - discovery.type=single-node
      - network.host=0.0.0.0
      - xpack.security.http.ssl.enabled:false
    volumes:
      - elasticsearch-data:/data
    networks:
      - microservices-net
    healthcheck:
      test: curl -s -f elasticsearch-service:9200/_cat/health >/dev/null || exit 1
      interval: 30s
      timeout: 10s
      retries: 5

networks:
  microservices-net:
    driver: bridge
volumes:
  sql:
  pgadmin:
  produit-mongo:
  produit-redis:
  rabbitmq:
  mailer-mysql:
  inventory-mysql:
  order-mysql:
  user-mysql:
  elasticsearch-data:
#  keycloack-data:

product-service.yml

spring:
  main:
    allow-bean-definition-overriding: true
  data:
    mongodb:
      host: ${PRODUCT_MONGO:localhost}
      port: 27017
      database: product-service
      username: admin
      password: admin
      authentication-database: admin
    redis:
      host: ${PRODUCT_REDIS:localhost}
      port: 6379
    elasticsearch:
      repositories:
        enabled: false
  elasticsearch:
    uris: http://${elasticsearch-service:localhost}:9200
    #username: elastic
    #password: 786919
    connection-timeout: 60000
    socket-timeout: 60000

Product-service logs after fail : {

2025-02-04 20:47:08 Caused by: java.lang.RuntimeException: Connection refused

2025-02-04 20:47:08 at org.springframework.data.elasticsearch.client.elc.ElasticsearchExceptionTranslator.translateException(ElasticsearchExceptionTranslator.java:64) ~[spring-data-elasticsearch-5.3.5.jar!/:5.3.5]

2025-02-04 20:47:08 ... 61 common frames omitted

2025-02-04 20:47:08 Caused by: java.ConnectException: Connection refused

2025-02-04 20:47:08 at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:934) ~[elasticsearch-rest-client-8.13.4.jar!/:8.13.4]

2025-02-04 20:47:08 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:304) ~[elasticsearch-rest-client-8.13.4.jar!/:8.13.4]

2025-02-04 20:47:08 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:292) ~[elasticsearch-rest-client-8.13.4.jar!/:8.13.4]

2025-02-04 20:47:08 at co.elastic.clients.transport.rest_client.RestClientHttpClient.performRequest(RestClientHttpClient.java:91) ~[elasticsearch-java-8.13.4.jar!/:na]

2025-02-04 20:47:08 at co.elastic.clients.transport.ElasticsearchTransportBase.performRequest(ElasticsearchTransportBase.java:144) ~[elasticsearch-java-8.13.4.jar!/:na]

2025-02-04 20:47:08 at co.elastic.clients.elasticsearch.indices.ElasticsearchIndicesClient.exists(ElasticsearchIndicesClient.java:666) ~[elasticsearch-java-8.13.4.jar!/:na]

2025-02-04 20:47:08 at org.springframework.data.elasticsearch.client.elc.IndicesTemplate.lambda$doExists$2(IndicesTemplate.java:177) ~[spring-data-elasticsearch-5.3.5.jar!/:5.3.5]

2025-02-04 20:47:08 at org.springframework.data.elasticsearch.client.elc.ChildTemplate.execute(ChildTemplate.java:71) ~[spring-data-elasticsearch-5.3.5.jar!/:5.3.5]

2025-02-04 20:47:08 ... 60 common frames omitted

2025-02-04 20:47:08 Caused by: java.ConnectException: Connection refused

2025-02-04 20:47:08 at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]

2025-02-04 20:47:08 at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[na:na]

2025-02-04 20:47:08 at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:944) ~[na:na]

}

When curl the elasticsearch while its running in docker it return green means running correctly. Tried running the product-service locally and everything else in docker and it connected corretly, but when i return running it in docker it fails returning error of connection to elasticsearch fails

发布评论

评论列表(0)

  1. 暂无评论