gpt4 book ai didi

docker - 如何从 docker-compose 创建的 docker 容器内部连接到本地机器?

转载 作者:行者123 更新时间:2023-12-04 17:15:23 24 4
gpt4 key购买 nike

我有一个使用 docker-compose 创建的 docker 容器。这是 yml 文件。

version: "3"
services:
redis:
image: "redis"
web:
image: "myimage"
ports:
- "8000:8000"
environment:
REDIS_HOST: redis
volumes:
- .:/usr/src/app
depends_on:
- "redis"
command: ["npm", "start"]

我的 Web 应用程序需要从此容器连接到本地计算机,因为我的本地计算机正在运行另一个 Web 应用程序,我的 docker 容器的 Web 应用程序需要访问该应用程序。我该怎么做?本地主机的 web 应用程序托管在不同的端口 (7777) 上。

我已经看过 From inside of a Docker container, how do I connect to the localhost of the machine? ,我使用“extra_hosts”选项让它工作,但我想知道是否有另一种方法来做到这一点?

最佳答案

Docker compose 只是一个用于启动多个 Docker 容器的实用程序。因此几乎所有适用于使用 docker run 启动容器的事情以 docker-compose 开头的容器相同.

特别是,由于您在 MAC 上,因此容器内有一个特殊的 DNS 名称可以解析为主机。

根据您拥有 DNS 的 docker 版本,可能会略有不同。

对于 Docker 18.03 及更高版本,您可以使用 host.docker.internal
对于 Docker 17.06 及以上版本,请使用 docker.for.mac.host.internal
17.06以下使用docker.for.mac.localhost
因此,您可以使用 <dns-name>:7777 连接到机器上的 Web 应用程序

更新:

为避免在代码中对值进行硬编码,请将此 DNS 名称作为 env 变量传递给容器。

environment:
REDIS_HOST: redis
WEB_APP: host.docker.internal

在应用程序中,获取 WEB_APP环境变量并使用它来连接

关于docker - 如何从 docker-compose 创建的 docker 容器内部连接到本地机器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50057180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com