Докер использует общую конфигурацию в dockerfile и docker-compose.yml - PullRequest
0 голосов
/ 17 октября 2018

Я использую много док-контейнеров.Я хочу назначить статический ip одному из них и использовать этот статический ip в dockerfile другого.
Я хочу использовать какие-то файлы конфигурации, такие как .env file, и использовать его в обоих dockerfile и docker-compose.yml.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы, вероятно, не хотите делать ни одно из этих действий.

Если вы запускаете оба контейнера в одной и той же настройке Docker Compose, то Compose создаст для вас частную сеть Docker, и один контейнер можетполучить доступ к другому, используя его имя контейнера (или имя блока в docker-compose.yml) в качестве имени хоста.Это должно устранить необходимость в статическом IP-адресе.

Во-вторых, жесткое кодирование имен хостов или IP-адресов, подобных этому, значительно усложняет повторное использование настроек.В качестве очень простого примера, при разработке вне Docker вы можете запустить клиент и сервер на одном хосте и использовать localhost в качестве имени хоста, но в настройке Docker Compose они будут находиться в разных контейнерах и использовать разные имена хостов.,Это также означает, что вы никогда не сможете docker push создать образ в реестре, что необходимо для некоторых распространенных сценариев развертывания.Переменная окружения является распространенным способом передачи этого извне.

A docker-compose.yml, который выполнил это, может выглядеть так:

version: '3'
services:
  server:
    build:
      context: ./server
  client:
    build:
      context: ./client
    env:
      SERVER_URL: 'http://server/'
0 голосов
/ 18 октября 2018

Я придумываю способ.просто:

  1. добавьте конфигурации в файл .env, например ip_server=172.20.0.2.
  2. используйте .env переменные в docker-compose.yml и передайте их в образ докера в качестве аргумента, например:

    services:
      client
      build:
        context: ./client
        args:
          - IP_SERVER=${ip_server}

затем используйте его в dockerfile примерно так:

    ARG IP_SERVER
    ENV IP_SERVER=${IP_SERVER}


ссылки:
- docker-compose env file
- docker-compose args
- dockerfile env

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...