【问题标题】:How can I retrieve my host machines IP address from inside a docker compose file? [duplicate]如何从 docker compose 文件中检索我的主机 IP 地址? [复制]
【发布时间】:2020-05-25 16:13:47
【问题描述】:

我查看了许多 stackoverflow 答案,但找不到解决我的问题的方法,所以如果它看起来与其他问题相似,我深表歉意。
我有一个 docker compose 文件,它需要连接到端口 5555 上的本地数据库。我需要能够在 docker compose 文件中设置一个 env var,它将转换为我的主机 IP 地址。
类似的东西

environment:
  - db_uri=postgres://(HOST_IP):5555/db_name

我该怎么做?

【问题讨论】:

  • 您需要在 Docker Compose 空间之外设置环境变量,但链接的问题讨论了找到它的标准方法。在非 Linux 主机上,Docker 为您提供 DNS 名称。如果可以的话,我会避免主机网络(因为该问题的所有最佳答案都在推广它),它会禁用许多标准 Docker 功能。

标签: docker docker-compose


【解决方案1】:

我觉得你应该创建两个同一个网络的容器,然后你可以直接调用数据库URL。

指: https://runnable.com/docker/docker-compose-networking

【讨论】:

    【解决方案2】:

    这可以分两步完成 -

    1. 在 docker compose 文件中将 HOST_IP 定义为变量, 使用 ${} 符号如下:

    db_uri=postgres://${HOST_IP}:5555/db_name

    1. 将动态变量 - HOST_IP 传递给编写文件,通过同一目录中的 .env 文件或通过 export 命令。

    .env 文件示例:

    HOST_IP=192.168.1.100

    导出命令示例:

    导出 HOST_IP=192.168.1.100

    更多信息:

    docker compose 文件中的动态变量: https://serversforhackers.com/c/div-variables-in-docker-compose

    获取主机的 IP 地址:

    Which terminal command to get just IP address and nothing else?

    【讨论】:

    • 这可行,但是我正在寻找一种能够在我使用的任何机器上找到 HOST_IP 的方法,所以我不想硬编码 IP 地址,因为那样它可能会在每台机器上发生变化
    • 嗨 Oliver,请参考链接 - stackoverflow.com/questions/8529181/… 了解在所有主机上查找 IP 地址的详细信息。
    猜你喜欢
    • 2021-05-02
    • 2014-05-21
    • 2022-06-14
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多