Создайте глобальную переменную od "extra_hosts" в docker-compose - PullRequest
1 голос
/ 07 июля 2019

Предположим, что у меня есть десять сервисов в docker-compose, и каждому этому сервису нужны одинаковые extra_hosts с четырьмя записями. Я хотел бы определить extra_hosts один раз и включить его в каждый сервис.

Возможно ли это?

version: '3.7'
services:

  web:
    build:
      context: ./apache
      dockerfile: dockerfile_apache2
    image: debian:latest
    container_name: hsthttp1
    extra_hosts:
     - "somehost1:162.242.195.82"
     - "somehost2:162.242.195.83"
     - "somehost3:162.242.195.84"
     - "somehost4:162.242.195.85"
  web2:
    build:
      context: ./apache
      dockerfile: dockerfile_apache2
    image: debian:latest
    container_name: hsthttp2
    extra_hosts:
     - "somehost1:162.242.195.82"
     - "somehost2:162.242.195.83"
     - "somehost3:162.242.195.84"
     - "somehost4:162.242.195.85"
  web3:
    build:
      context: ./apache
      dockerfile: dockerfile_apache2
    image: debian:latest
    container_name: hsthttp3
    extra_hosts:
     - "somehost1:162.242.195.82"
     - "somehost2:162.242.195.83"
     - "somehost3:162.242.195.84"
     - "somehost4:162.242.195.85"

1 Ответ

0 голосов
/ 10 июля 2019

Да, можно использовать Поля расширения для определения фрагментов многократного использования начиная с версии 3.4:

Для вашей ситуации вы можете использовать следующее:

докер-compose.yaml:

version: '3.7'

x-extra_hosts:
  &default-extra_hosts
  - "somehost1:162.242.195.82"
  - "somehost2:162.242.195.83"
  - "somehost3:162.242.195.84"
  - "somehost4:162.242.195.85"

services:
  web:
    image: debian:latest
    container_name: hsthttp1
    extra_hosts: *default-extra_hosts
  web2:
    image: debian:latest
    container_name: hsthttp2
    extra_hosts: *default-extra_hosts
  web3:
    image: debian:latest
    container_name: hsthttp3
    extra_hosts: *default-extra_hosts

Выше мы определяем глобальный &default-extra_hosts, который позже в каждом сервисе мы можем ссылаться на него с *default-extra_hosts.

Вы можете использовать docker-compose config для быстрой проверки эффекта следующим образом:

shubuntu1@shubuntu1:~/try$ docker-compose config
services:
  web:
    container_name: hsthttp1
    extra_hosts:
    - somehost1:162.242.195.82
    - somehost2:162.242.195.83
    - somehost3:162.242.195.84
    - somehost4:162.242.195.85
    image: debian:latest
  web2:
    container_name: hsthttp2
    extra_hosts:
    - somehost1:162.242.195.82
    - somehost2:162.242.195.83
    - somehost3:162.242.195.84
    - somehost4:162.242.195.85
    image: debian:latest
  web3:
    container_name: hsthttp3
    extra_hosts:
    - somehost1:162.242.195.82
    - somehost2:162.242.195.83
    - somehost3:162.242.195.84
    - somehost4:162.242.195.85
    image: debian:latest
version: '3.7'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...