【问题标题】:How to add mysql services into Consul docker container?如何将 mysql 服务添加到 Consul docker 容器中?
【发布时间】:2019-12-16 17:31:05
【问题描述】:

我正在使用 Windows 10 和 docker 桌面。 我从 docker 存储库中提取 consul docker 映像并尝试将 consul docker 服务器容器化以发现 mysql 服务。要将 mysql 服务添加到 consul docker 中,我输入 CONSUL 环境变量。例如,

CONSUL_SERVICE_ID=mysql
CONSUL_SERVICE_NAME=mysql8
CONSUL_SERVICE_ADDRESS=xxx.xxx.xxx.xxx
CONSUL_SERVICE_PORT=3306

但是 consul docker server 在运行 consul 容器时无法发现 mysql 服务。我拉的 docker 镜像是 consulgliderlabs/consul-server 如何将 mysql 服务注册到 consul docker 服务器?在 localhost 上安装 consul 服务器时,不是容器化,consul 服务器成功发现 mysql 服务。我不知道如何在码头上。请回复。

【问题讨论】:

  • 你的mysql服务器在哪里运行?它是与领事相同的撰写文件的一部分吗? mysql 是完全容器化还是在机器上独立运行?
  • 感谢您的回复。在同一主机上。但在不同的容器上运行。
  • 我建议您将它们放在同一个 docker-compose 文件中,然后它们就可以使用服务名称(在撰写文件中定义)作为它们的 DS 条目来检测彼此。以防万一,您必须将它们分开,您是否暴露了 mysql 服务器的端口? (看看你是否可以从你的主机访问Mysql(不涉及任何容器)。
  • Mysql docker 容器可以从容器外部的本地主机连接。有consul环境变量吗?

标签: mysql docker consul


【解决方案1】:

您可以在 docker-compose 文件中定义一个外部运行的容器,该文件实际上并未使用 external_links 在同一文件中定义。

external_links

链接到在这个 docker-compose.yml 之外启动的容器,甚至 在 Compose 之外,特别是对于提供共享或 共同服务。 external_links 遵循类似于 legacy 的语义 指定容器名称和链接时的选项链接 别名 (CONTAINER:ALIAS)。

external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql

Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2017-04-21
    • 2017-07-11
    • 2019-09-19
    • 2019-03-30
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多