在 docker-compose 中使用—— add-host 或 tra_hosts

我使用 docker-compose来运行一个测试环境,它由大约5个不同的容器组成。容器间链接和共享卷(卷-from)工作得非常好。我还向主机公开了一些端口,这些端口工作得很好。

我所缺少的是一种将我的一些真正的服务器链接到这个环境中的方法,而不需要硬编码 IP 地址。使用 docker run,您可以使用 --add-host/etc/hosts文件中添加另一行。有没有什么方法可以做一些类似的码头-组成?

264027 次浏览

我有一个好消息: 这将在作曲1.3!

我在当前 RC (RC1)中使用它,如下所示:

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

Https://github.com/compose-spec/compose-spec/blob/master/spec.md#extra_hosts

Tra _ hosts -添加主机名映射。 使用与 docker 客户端相同的值—— add-host 参数。

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

一个带有 ip 地址和主机名的条目将在这个服务的容器内的/etc/hosts > 中创建,例如:

162.242.195.82  somehost
50.31.209.229   otherhost

基本 docker-compose.yml额外的接待员:

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
        

创建容器中的 /etc/hosts文件中的内容:

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

您可以使用以下命令检查 /etc/hosts文件:

$ 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