我有一个使用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应用程序需要从此容器连接到本地计算机,因为我的本地计算机正在运行Docker容器的Web应用程序需要访问的另一个Web应用程序。我该怎么做呢?本地主机的web应用程序托管在其他端口(7777)上。
我已经从Docker容器内部看到了如何连接到计算机的本地主机?,并且使用“ extra_hosts”选项可以使它正常工作,但是我想知道是否还有另一种方法?
Docker compose只是一个用于启动多个Docker容器的实用程序。因此,对于以开头的容器,几乎所有适用于启动的条件docker run
都相同docker-compose
。
特别是,由于您使用的是MAC,因此在容器内有一个解析为主机的特殊DNS名称。
根据使用的docker版本,DNS可能会略有不同。
对于Docker 18.03及更高版本,您可以使用 host.docker.internal
对于Docker 17.06及以上版本使用 docker.for.mac.host.internal
低于17.06使用 docker.for.mac.localhost
因此,您可以使用以下方式连接到计算机上的Web应用程序: <dns-name>:7777
更新:
为避免对代码中的值进行硬编码,请将此DNS名称作为env变量传递给容器。
environment:
REDIS_HOST: redis
WEB_APP: host.docker.internal
在应用程序内,获取WEB_APP
环境变量并使用它进行连接
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句