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)
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
https://docs.docker.com/compose/compose-file/#extra_hosts
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
This is in the feature backlog for Compose but it doesn't look like work has been started yet. Github issue.
It seems like it should be made possible to say:
extra_hosts:
- "loghost:localhost"
So if the part after the colon (normally an IP address) doesn't start with a digit, then name resolution will be performed to look up an IP for localhost, and add something like to the container's /etc/hosts:
127.0.0.1 loghost
...assuming that localhost resolves to 127.0.0.1 on the host system.
It looks like it'd be really easy to add in docker-compose's source code: compose/config/types.py's parse_extra_hosts function would likely do it.
For docker itself, this would probably be addable in opts/hosts.go's ValidateExtraHost function, though then it's not strictly validating anymore, so the function would be a little misnamed.
It might actually be a little better to add this to docker, not docker-compose - docker-compose might just get it automatically if docker gets it.
Sadly, this would probably require a container bounce to change an IP address.
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