我们有一个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文件中,我们尝试了几种方法,但无法访问 flex 服务。
我们的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)

您对我们缺少的东西有任何想法吗?

最佳答案

因此,我们找到了一个解决方案:

在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

关于ruby - 在Wercker中启动ElasticSearch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53597455/

10-13 01:27