Как редактировать файл yaml в Dockerfile или в оболочке? - PullRequest
0 голосов
/ 07 февраля 2020

В Dockerfile я загружаю один файл конфигурации из curl, который мне затем нужно немного отредактировать, вот пример структуры:

client:
  ...
server:
  applicationConnectors:
  - type: http
    port: 8989
    # for security reasons bind to localhost
    bindHost: localhost
  requestLog:
      appenders: []
  adminConnectors:
  - type: http
    port: 8990
    bindHost: localhost

Мне нужно отредактировать оба параметра bindHost, это будет было бы желательно, если бы я мог передать их значения в качестве параметра во время docker build, но я не нашел ничего в Inte rnet или в документации.

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы можете создать файл .env, который затем содержит переменные, которые вы хотели бы иметь, например:

BINDHOST=localhost

И в вашем docker-compose.yml вы пишете:

client:
  ...
server:
  applicationConnectors:
  - type: http
    port: 8989
    # for security reasons bind to localhost
    bindHost: ${BINDHOST}
  requestLog:
      appenders: []
  adminConnectors:
  - type: http
    port: 8990
    bindHost: ${BINDHOST}

Узнайте больше об этом здесь: https://docs.docker.com/compose/environment-variables/

Надеюсь, это поможет.

0 голосов
/ 07 февраля 2020

Мне нужно отредактировать оба параметра bindHost, было бы желательно, чтобы я мог передать их значения в качестве параметра во время docker сборки, но я не нашел ничего в Inte rnet или в документация.

Вы можете использовать директиву ARG в Dockerfile и передать ей значение с помощью --build-arg.

Dockerfile ARG :

ARG <name>[=<default value>]

Инструкция ARG определяет переменную, которую пользователи могут передать сборщику во время сборки с помощью команды docker build, используя флаг --build-arg =. Если пользователь указывает аргумент сборки, который не был определен в Dockerfile, сборка выдает предупреждение.

[Warning] One or more build-args [foo] were not consumed.

Dockerfile может содержать одну или несколько инструкций ARG. Например, следующий допустимый файл Docker:

FROM busybox
ARG user1
ARG buildno

Docker Build Args :

Установить переменные времени сборки (- -build-arg)

Вы можете использовать инструкции ENV в Dockerfile для определения значений переменных. Эти значения сохраняются в построенном изображении. Тем не менее, часто настойчивость не то, что вы хотите. Пользователи хотят указывать переменные по-разному в зависимости от того, на каком хосте они создают образ.

Хорошим примером являются http_proxy или исходные версии для извлечения промежуточных файлов. Инструкция ARG позволяет авторам Dockerfile определять значения, которые пользователи могут устанавливать во время сборки, используя флаг --build-arg:

$ docker build --build-arg HTTP_PROXY=http://10.20.30.2:1234 --build-arg FTP_PROXY=http://40.50.60.5:4567 .

Этот флаг позволяет передавать переменные времени сборки, к которым осуществляется доступ, как обычные переменные среды в инструкции RUN Dockerfile. Кроме того, эти значения не сохраняются в промежуточных или конечных изображениях, как значения ENV. Вы должны добавить --build-arg для каждого аргумента сборки.

Использование этого флага не изменит вывод, который вы видите, когда строки ARG из Dockerfile отображаются во время процесса сборки.

Для получения подробной информации об использовании инструкций ARG и ENV см. ссылку на Dockerfile.

Вы также можете использовать флаг --build-arg без значения, в этом случае значение из локальной среды будет распространено в Docker строящийся контейнер:

$ export HTTP_PROXY=http://10.20.30.2:1234
$ docker build --build-arg HTTP_PROXY .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...