[英]httpoison cannot access elasticsearch from webapp in a docker environment
当尝试使用webapp(使用elixir / ecto作为后端语言),postgres数据库,elasticsearch和kibana使用以下docker-compose.yaml文件启动项目时:
version: '3'
services:
registry:
restart: always
image: registry:2
ports:
- 443:443
volumes:
- /path/data:/var/lib/registry
- /path/certs:/registry/certs
- /path/auth:/registry/auth
webapp:
build:
context: ../../../
dockerfile: config/docker/dev/Dockerfile-dev
container_name: MyWebApp-dev
image: 'localhost:443/123'
environment:
- ELASTICSEARCH_URL=http://localhost:9200
- ELASTICSEARCH_HOST=localhost
ports:
- "4000:4000"
- "3000:3000"
depends_on:
- db
- elasticsearch
- kibana
networks:
- esnet
db:
image: postgres:10
container_name: db
environment:
- POSTGRES_USER=paul
- POSTGRES_PASSWORD=SilviaZita1
- POSTGRES_DB=snitch_dev
networks:
- esnet
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
container_name: elasticsearch
environment:
- node.name=elasticsearch
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=elasticsearch,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=elasticsearch
- cluster.initial_master_nodes=elasticsearch,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:7.0.1
ports:
- "5601:5601"
container_name: kibana
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
- ELASTICSEARCH_HOST=elasticsearch
depends_on:
- elasticsearch
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
,
我收到以下错误:
**(混合)无法创建索引产品。 MyWebApp-dev | MyWebApp-dev | %HTTPoison.Error {id:nil,reason :: econnrefused}
有谁知道如何解决这个问题?
当您尝试从您的webapp
访问elasticsearch
时,我相信您收到此连接被拒绝错误。
在容器内使用localhost
引用自身。 在docker-compose中,如果要访问另一个正在侦听特定端口的服务,则必须构建URL,如http://<service-name>:<port>
在你的情况下:
如果你想从webapp
容器访问正在监听9200
elasticsearch
服务,那么你的URL应该是http://elasticsearch:9200
在你的webapp
的服务定义, ELASTICSEARCH_URL
和ELASTICSEARCH_HOST
使用elasticsearch
,而不是localhost
。
使用以下撰写文件:
version: '3'
services:
registry:
restart: always
image: registry:2
ports:
- 443:443
volumes:
- /path/data:/var/lib/registry
- /path/certs:/registry/certs
- /path/auth:/registry/auth
webapp:
build:
context: ../../../
dockerfile: config/docker/dev/Dockerfile-dev
container_name: MyWebApp-dev
image: 'localhost:443/123'
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
- ELASTICSEARCH_HOST=elasticsearch
ports:
- "4000:4000"
- "3000:3000"
depends_on:
- db
- elasticsearch
- kibana
networks:
- esnet
db:
image: postgres:10
container_name: db
environment:
- POSTGRES_USER=paul
- POSTGRES_PASSWORD=SilviaZita1
- POSTGRES_DB=snitch_dev
networks:
- esnet
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
container_name: elasticsearch
environment:
- node.name=elasticsearch
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=elasticsearch,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=elasticsearch
- cluster.initial_master_nodes=elasticsearch,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:7.0.1
ports:
- "5601:5601"
container_name: kibana
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
- ELASTICSEARCH_HOST=elasticsearch
depends_on:
- elasticsearch
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.