【问题标题】:Issues in elasticsearch server running in docker在 docker 中运行的弹性搜索服务器中的问题
【发布时间】:2015-11-05 10:17:25
【问题描述】:

我是 Docker 新手。我开发了一个需要弹性搜索服务器启动和运行的 web 应用程序,服务器本身会监听任何用户请求。在我们的工作流程中,我们希望看到 elasticsearch 启动并运行,然后 logstash 能够发布数据(通过在 logstash conf 文件的帮助下读取我们拥有的数据),最后启动我们拥有的 webapp。建议我使用 docker compose,因为它有助于组合多个服务器。
所以,我们有 3 个子目录,每个 es、logstash 和 webapp 一个。

在我的第一步中,我的 elasticsearch dockerfile 中有以下几行

FROM elasticsearch:latest

RUN plugin -i elasticsearch/marvel/latest

同样,我在其他子目录中也有 Dockerfile。 我使用命令“docker-compose up”来启动这个过程。一旦构建了 ES,就会构建 logstash。在构建 logstash 时,它会尝试将数据发布到 ES。但它在这里发现 ES 没有启动并运行。我看到连接被拒绝异常。有人能说出为什么会出现这个错误吗? Dockerfile里面的内容ok吗?

我认为,我没有按照我应该使用的方式使用 docker / docker-compose。可能是,一些学习材料的指针会有所帮助。我发现很多,但与我的用例无关。

【问题讨论】:

    标签: elasticsearch docker logstash docker-compose


    【解决方案1】:

    运行up 时有两个阶段。运行docker build 的“构建”阶段和运行相当于docker run 的“运行”阶段。在构建阶段,不支持链接到其他容器,因此您将无法连接到它们。

    一个简单的解决方案是在“运行”阶段运行部分设置,但缺点是它没有缓存并且每次都必须执行。

    要将其作为构建阶段的一部分包含在内,您可以导出需要发送到 ES 的 json,将其作为 ES 构建的一部分包含在内,然后执行如下步骤:

    1. 启动 es
    2. 等待es可用
    3. 运行 curl 将数据 PUT/POST 到 ES
    4. 停止

    【讨论】:

      猜你喜欢
      • 2022-11-13
      • 2019-11-19
      • 2015-04-12
      • 2019-07-18
      • 2016-01-31
      • 2023-02-06
      • 2015-11-24
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多