打开到localhost:9200的TCP连接失败- Docker上的Rails



我试图在docker上运行弹性搜索。我建立了一个与我的db容器连接的rails应用程序的容器。我想把这个rails容器和弹性容器连接起来但是我得到了这个错误

打开连接到localhost:9200的TCP连接失败(无法分配请求的地址- connect(2) for ';localhost"端口9200)

当我运行docker-compose这些url工作正常0.0.0.0:3000,0.0.0.0:9200

这是我的docker-compose.yml

version: "3.9"
services:
db:
restart: always
image: postgres:latest
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
web:
build:
context: .
dockerfile: docker/Dockerfile
command:  bundle exec rails server -b 0.0.0.0
environment: 
POSTGRES_HOST: db
POSTGRES_PASSWORD: password
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- db
entrypoint: docker/entrypoint.sh
elasticsearch:
image: elasticsearch:7.14.0
container_name: elasticsearch
environment:
- "ELASTICSEARCH_URL=http://elasticsearch:9200"
- node.name=elasticsearch
- cluster.name=es-docker-cluster
- "ELASTIC_HOST=elasticsearch"
- cluster.initial_master_nodes=elasticsearch
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
networks:
- elastic
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
ports:
- "9200:9200"
networks:
elastic:
driver: bridge

当我运行docker-compose up并通过浏览器访问0.0.0.0:9200时我得到这个响应

{
"name" : "elasticsearch",
"cluster_name" : "es-docker-cluster",
"cluster_uuid" : "eYnzMPJAQsGJ_QGco2mF-A",
"version" : {
"number" : "7.14.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
"build_date" : "2021-07-29T20:49:32.864135063Z",
"build_snapshot" : false,
"lucene_version" : "8.9.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

您的docker-compose文件中的'web'服务在其本地主机端口9000上没有任何运行

然而,它是一个网络的一部分(由docker-compose创建)与许多其他服务(elasticsearch和db)。elasticsearch服务在该网络中的主机'elasticsearch'端口9200上可达。更好的说法是:http://elasticsearch:9200/

最新更新