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

时间:2018-04-27 07:11:01

标签: docker docker-compose docker-network

我有一个使用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"]

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

我已经看过From inside of a Docker container, how do I connect to the localhost of the machine?,我使用" extra_hosts"选项,但我想知道是否还有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:5)

Docker compose只是一个用于启动多个Docker容器的实用程序。因此,对于以Linecast开头的容器,几乎所有适用于使用docker run启动容器的内容都是相同的。

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

根据您拥有的泊坞窗版本,DNS可能略有不同。

对于Docker 18.03及更高版本,您可以使用docker-compose

对于Docker 17.06及其以上使用host.docker.internal

17.06以下使用docker.for.mac.host.internal

因此,您可以使用docker.for.mac.localhost

连接到计算机上的Web应用程序

<强>更新

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

<dns-name>:7777

在应用内部,获取environment: REDIS_HOST: redis WEB_APP: host.docker.internal 环境变量并使用它来连接

相关问题