122

私はdocker-compose、約 5 つの異なるコンテナーで構成されるテスト環境を実行するために使用しています。コンテナ間のリンクと共有ボリューム (volumes-from) は素晴らしく機能します。また、いくつかのポートをホスト マシンに公開します。これはうまく機能します。

私が見逃しているのは、IP アドレスをハードコーディングせずに、実サーバーの一部をこの環境にリンクする方法です。では、ファイルに別の行を追加するためにdocker run使用できます。docker-compose で同様のことを行う方法はありますか?--add-host/etc/hosts

4

4 に答える 4

119

素晴らしいニュースがあります。これは Compose 1.3 に含まれます!

私はこのように現在のRC(RC1)でそれを使用しています:

rng:
  build: rng
  extra_hosts:
    seed: 1.2.3.4
    tree: 4.3.2.1
于 2015-05-30T01:56:30.807 に答える
110

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

extra_hosts - ホスト名のマッピングを追加します。docker client --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
于 2015-10-23T22:26:00.290 に答える
34

追加のホスト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
于 2020-04-15T14:23:10.037 に答える