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

后端 未结 5 2053
没有蜡笔的小新
没有蜡笔的小新 2021-01-30 03:47

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)

相关标签:
5条回答
  • 2021-01-30 04:16

    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
    
    0 讨论(0)
  • 2021-01-30 04:20

    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
    
    0 讨论(0)
  • 2021-01-30 04:21

    This is in the feature backlog for Compose but it doesn't look like work has been started yet. Github issue.

    0 讨论(0)
  • 2021-01-30 04:25

    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.

    0 讨论(0)
  • 2021-01-30 04:35

    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
    
    0 讨论(0)
提交回复
热议问题