как передать значения среды со значениями по умолчанию в точку входа в файле docker-compose - PullRequest
0 голосов
/ 11 марта 2019

У меня есть док-контейнер, который я хотел бы запустить с определенным сценарием точки входа.

проблема в том, что моему сценарию точки входа требуются переменные среды, для которых я хотел бы установить значения по умолчанию.

    entrypoint:
  - /bin/bash
  - -c
  - |
    set -e
    java -jar liquibase.jar --driver=com.mysql.jdbc.Driver \
    --classpath=mysql-connector-java-5.0.8-bin.jar \
    --url="jdbc:mysql://${DB_HOST}/${DB_NAME}" --username=${DB_USER} --password=${DB_PASSWORD} \
    --logLevel=warning migrate;

В моем конкретном случае я хотел бы подключиться к БД, и в большинстве случаев параметры БД существуют со значениями по умолчанию (например:

environment: DB_USER: ${DB_USER:-root} DB_PASSWORD: ${DB_PASSWORD:-123} DB_HOST: ${DB_HOST:-mysql} DB_NAME: $ {DB_NAME: -myDb})

, когда я выполняю его, я получаю следующую ошибку (по одной для каждой конфигурации):

WARNING: The DB_HOST variable is not set. Defaulting to a blank string.

знаете ли вы, почему значения по умолчанию не передаются в контейнер(при добавлении файла .env с определенным параметром все работает отлично и значения доступны при выполнении точки входа)?

почему значение по умолчанию не установлено?

1 Ответ

0 голосов
/ 11 марта 2019

похоже, что работает следующее решение: Извлеките сценарий точки входа в файл сценария .sh.

когда вы запустите свой контейнер, переменные среды получат значения по умолчанию, если они не настроены в файле .env.

новый скрипт может напрямую использовать параметры и значения существуют.

Я не уверен, почему это поведение, но это, вероятно, что-то в порядке загрузки каждого раздела docker-compose.

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