docker-compose.yml передавая arg для сборки из содержимого файла - PullRequest
0 голосов
/ 19 июня 2019

Я хотел бы прочитать содержимое файла, указанного в переменной среды, и передать его в docker-compose в качестве аргумента сборки.
Итак, в моем Dockerfile я могу сделать:

ARG MY_FILE
RUN echo "$MY_FILE" > /my-file

Это прекрасно работает:

docker-compose -f ./docker-compose.yml build --build-arg MY_FILE="$(cat $PATH_TO_MY_FILE)"

Однако, если я попытаюсь сделать это в docker-compose.yml примерно так:

    build:
      context: .
      args:
        - MY_FILE="$(cat $PATH_TO_MY_FILE)"

с этой ошибкой происходит сбой:

ERROR: Invalid interpolation format for "build" option in service "my-service": "MY_FILE="$(cat $PATH_TO_MY_FILE)""

Есть идеи, как мне построить эту строку, чтобы получить такой же эффект?Я пытался $$ и т. Д., Но, похоже, не работает ...

Спасибо за вашу помощь:)

1 Ответ

1 голос
/ 19 июня 2019

Docker compose не поддерживает это, поэтому вы должны использовать только обходной путь.Это может означать либо предварительную обработку файла compose, либо генерирование команды, которую вы запустили, прочитав yaml и интерполировав, сгенерировав команду в bash

. Вы можете использовать что-то вроде yq и анализировать параметры из docker-compose.ymlи сгенерируйте свою команду.Но, честно говоря, то, что вы делаете сейчас, просто и эффективно.

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