使用Docker Compose部署Elasticsearch 8.3.3遇依赖错误求助
问题解决:Docker Compose依赖服务未定义错误
问题原因
Docker Compose的depends_on字段必须引用services块中声明的服务名称,而非容器的container_name。你的配置里,elasticsearch服务的名称是elasticsearch,但kibana的depends_on写了容器名els,导致Compose无法识别依赖的服务,触发报错。
另外,kibana配置的ELASTICSEARCH_URL用了localhost:9200也有问题——在Docker Compose网络中,容器间通信需要用服务名而非localhost(localhost指向kibana容器自身),这会导致kibana无法连接elasticsearch。
修正后的docker-compose.yml
version: '3.1' services: elasticsearch: container_name: els image: docker.elastic.co/elasticsearch/elasticsearch:8.3.3-arm64 ports: - 9200:9200 volumes: - elasticsearch-data:/usr/share/elasticsearch/datafile environment: - xpack.monitoring.enabled=true - xpack.watcher.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - discovery.type=single-node networks: - elastcinetwork kibana: container_name: kibana image: docker.elastic.co/kibana/kibana:8.3.3-arm64 ports: - 5601:5601 depends_on: - elasticsearch # 改为services块中的服务名 environment: - ELASTICSEARCH_URL=http://elasticsearch:9200 # 用服务名实现容器间通信 networks: - elastcinetwork networks: elastcinetwork: driver: bridge volumes: elasticsearch-data:
关键修正点
- 将kibana的
depends_on值从els改为elasticsearch,对应services块中定义的服务名称 - 把
ELASTICSEARCH_URL改为http://elasticsearch:9200,借助Compose内置的DNS解析完成容器间网络访问
内容的提问来源于stack exchange,提问作者Ibrahim Alkhateeb
相关产品推荐
相关产品推荐

