Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 链接到容器时如何使用主机网络?_Laravel_Docker_Docker Compose - Fatal编程技术网

Laravel 链接到容器时如何使用主机网络?

Laravel 链接到容器时如何使用主机网络?,laravel,docker,docker-compose,Laravel,Docker,Docker Compose,在我的docker中: laravel: image: trackware links: - postgis:postgis ports: - "80:80" - "3306:3306" - "443:443" - "220:22" - "8000:8000" net: "host" restart: always volumes: -

在我的docker中:

laravel:
    image: trackware
    links:
        - postgis:postgis
    ports:
        - "80:80"
        - "3306:3306"
        - "443:443"
        - "220:22"
        - "8000:8000"
    net: "host"
    restart:  always
    volumes:
        - C:/H/repositories/pubnub:/share
    container_name: laravel

postgis:
    image: mdillon/postgis
    env_file: .postgis_env
    ports:
        - "9090:9000"
        - "54320:5432"
    container_name: postgis
如果我运行
docker compose up-d
我会得到以下错误:

Conflicting options: host type networking can't be used with links. This would result in undefined behavior
那么,在链接到postgis容器时,我将如何使用
net:“host”
? laravel容器需要运行pubnub客户端,这将需要高性能的网络来进行实时消息处理,还需要链接到
postgis
容器来访问数据库


那么,有什么建议吗?我使用的是docker 1.10.2

因为您将postgis端口公开给主机,所以可以跳过链接,通过
localhost:9000
连接到它。我相信这会起作用,因为Laravel应用程序驻留在主机网络上,它们将共享这些端口。

我不知道为什么,但是。。。您不应该使用“主机”驱动程序和端口映射,至少不会得到预期的结果。在类似“220:22”的情况下,您将得到映射到主机的22个端口

据我所知,“Net”已经过时了,请改用“”。 另外,我建议您将docker compose更新到最新版本,现在是1.6.2。以前的版本有一些网络问题


可能是您可以使用“”驱动程序?在您的情况下,我看不到它无法解决的问题。

我们使用links关键字的原因是docker可以在内部进行主机名解析,以便两个不同的容器可以相互通信。 在您的情况下,如果您没有使用主机网络并使用link关键字,那么docker会在内部为每个容器名称创建一个主机名,以便两个容器可以相互通信。
当您使用“主机”模式网络时,意味着您正在告诉docker我将使用“主机”基础网络,因此,只需在本地主机上公开端口,我的容器就可以相互通信。

如何在windows上更新docker compose?如何将docker compose文件转换为版本2?抱歉,不确定Windows。尝试运行并选中“docker compose”框。关于转换compose文件,在您的情况下,只需添加版本和服务部分。这里有更多关于PubNub的信息,有什么需要考虑的吗?看起来没有,但我想我会问。不,这里没有任何与PubNub相关的内容。您可能想从这个问题中删除laravel标记,因为它似乎是一个普通的docker撰写问题。我试图在127.0.0.1上将django容器连接到postgis容器,但它仅适用于localhost。