2016-02-26 97 views
5

在我的码头工人,撰写:如何在链接到容器时使用主机网络?

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 

所以,我会怎么用net: "host"同时链接到PostGIS的容器? laravel容器需要运行pubnub客户端,这将需要高性能网络来处理实时消息,并且它还需要链接到postgis容器才能访问db。

那么,有什么建议吗?我正在使用docker 1.10.2

+0

是否有任何需要考虑的PubNub相关?看起来不像有,但我想问问。 –

+1

不,这里没有任何关系到PubNub – simo

+0

你可能想从这个问题中删除laravel标签,因为它似乎是一个普通的码头问题 – BSchlinker

回答

5

由于您将postgis端口暴露给主机,您可以跳过链接并通过localhost:9000连接到它。我相信这会工作,因为laravel应用程序驻留在主机网络,他们将共享这些端口。

+0

我试图将django容器连接到127.0.0.1上的postgis容器,但它只适用于本地主机。 –

0

我不知道原因,但...你不应该使用“主机”驱动程序和端口映射,至少你不会得到预期的结果。在像这样的“220:22”的情况下,你会得到22端口映射到主机。

据我所知,“Net”已过时,请使用“network_mode”代替。 另外,我会建议你更新码头撰写到最新版本,现在是1.6.2。以前的版本有一些网络问题。

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

+0

我如何在Windows上更新docker-compose?如何将docker-compose文件转换为版本2? – simo

+0

对不起,不确定Windows。尝试运行[工具箱](https://www.docker.com/products/docker-toolbox)并选中“docker-compose”框。 关于转换撰写文件,在你的情况下,只需添加版本和服务部分。这里更多关于[link](https://docs.docker.com/compose/compose-file/) – SLY

相关问题