Reputation: 24590
In my docker-compose:
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
if I run docker-compose up -d
I get this error:
Conflicting options: host type networking can't be used with links. This would result in undefined behavior
So, how would I use net: "host"
while linking to postgis container?
laravel container needs to run pubnub client, which will need high-performance networking for real time messages handling, and also it needs to link to postgis
container to access db.
So, any advice? I am using docker 1.10.2
Upvotes: 16
Views: 22541
Reputation: 1043
The reason why we use links keyword is so that docker can internally make hostname resolution so that two disparate containers can communicate with each other. In your case if you were not using host network and using the link keyword then docker would have created a hostname with each container names internally so both containers can communicate with each others. When you are using "host" mode network means you are telling docker that i shall be using the "hosts" underlying network and hence by simply exposing the ports on the localhost my containers can communicate with each other.
Upvotes: 1
Reputation: 1319
Since you expose postgis ports to host, you can skip linking and connect to it through localhost:9000
. I believe this will work since the Laravel application resides on the host network and they will share those ports.
Upvotes: 10
Reputation: 535
I dunno reason but... You shouldn't use "host" driver and port mapping, at least you wouldn't get expected result. In case like this "220:22" you'll get 22 port mapped to the host machine.
"Net" is outdated as far as I know, use "network_mode" instead. Also I would recommend you to update docker-compose to the latest version, now is 1.6.2. Previous versions had some networking problems.
May be you can use "bridge" driver? In your case, I can't see problems which it couldn't resolve.
Upvotes: 0