Запустите ElasticSearch в Wercker
У нас есть проект Ruby, в котором мы используем Wercker в качестве непрерывной интеграции.
Нам нужно запустить сервис Elastic Search, чтобы запустить некоторые интеграционные тесты.
Локально мы добавили конфигурацию Elastic в файл Docker, и все прошло гладко:
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.5.1
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- "9200:9200"
- "9300:9300"
В файле Wercker.yml мы попробовали несколько вещей, но мы не можем достичь эластичного сервиса. Наш wercker.yml содержит:
services:
- id: elasticsearch:6.5.1
env:
ports:
- "9200:9200"
- "9300:9300"
У нас есть этот король ошибки при попытке использовать Elastic в наших тестах:
Errno::EADDRNOTAVAIL: Failed to open TCP connection to localhost:9200 (Cannot assign requested address - connect(2) for "localhost" port 9200)
Ты хоть представляешь, чего нам не хватает?
1 ответ
Решение
Итак, мы нашли решение:
В wercker.yml
services:
- id: elasticsearch:6.5.1
cmd: "/elasticsearch/bin/elasticsearch -Ediscovery.type=single-node"
И мы добавили шаг, чтобы проверить соединение:
build:
steps:
- script:
name: Test elasticsearch connection
code: curl http://elasticsearch:9200