Using --add-host or extra_hosts with docker-compose

I am using docker-compose to run a test environment, that consists of about 5 different containers. The inter-container links and the shared volumes (volumes-from) works wonderfully. I also expose some ports up to the host machine, which works nicely.

What I am missing is a way to link some of my real servers into this environment, without hardcoding ip address. With docker run, you could use --add-host to add another line in your /etc/hosts file. Is there any way to do something similar with docker-compose?

3 Answers

I have great news: this will be in Compose 1.3!

I'm using it in the current RC (RC1) like this:

rng: build: rng extra_hosts: seed: 1.2.3.4 tree: 4.3.2.1 
3

extra_hosts - Add hostname mappings. Uses the same values as the docker client --add-host parameter.

extra_hosts: - "somehost:162.242.195.82" - "otherhost:50.31.209.229" 

An entry with the ip address and hostname will be created in /etc/hosts > inside containers for this service, e.g:

162.242.195.82 somehost 50.31.209.229 otherhost 
5

Basic docker-compose.yml with extra hosts:

version: '3' services: api: build: . ports: - "5003:5003" extra_hosts: - "your-host.name.com:162.242.195.82" #host and ip - "your-host--1.name.com your-host--2.name.com:50.31.209.229" #multiple hostnames with same ip 

The content in the /etc/hosts file in the created container:

162.242.195.82 your-host.name.com 50.31.209.229 your-host--1.name.com your-host--2.name.com 

You can check the /etc/hosts file with the following commands:

$ docker-compose -f path/to/file/docker-compose.yml run api bash # 'api' is service name #then inside container bash root@f7c436910676:/app# cat /etc/hosts 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like