Как передать переменную env в файл json при выполнении команды запуска docker - PullRequest
0 голосов
/ 01 мая 2020

Я выполняю ниже docker команду запуска для запуска моего nodejs контейнера docker

docker run -p 8080:7000 --env db_url=10.155.30.13 automation:v1.0.3

И я пытаюсь получить доступ к этой переменной env с помощью используя отдельный файл конфигурации из моего контейнера. Файл конфигурации имеет формат json, как показано ниже.

{
"db_host": "${process.env.db_url}",
}

И в моем коде nodejs я получаю доступ к этому значению db_host, чтобы добавить IP-адрес хоста к слушателю. Но когда приведенный выше код выполняется, контейнер docker отключается, как только вызывается. Но если я заменю значение файла json, как показано ниже, оно будет работать нормально, и мой контейнер прослушивает, как показано ниже. Может ли кто-нибудь помочь мне передать значение и получить к нему доступ в моем файле json?

{
"db_host": "10.155.30.13",
}

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Вы можете получить значение в приложении

const db_host = process.env.db_url || "10.155.30.13"

вместо чтения его из json файла.

0 голосов
/ 01 мая 2020

Нельзя заменить переменную среды в файле JSON, вы можете использовать dotenv или config , что поможет иметь некоторое значение по умолчанию в файле конфигурации и переопределить это значение из переменные окружения.

создать конфигурацию по умолчанию vi config/default.json

{
"db_host": "10.155.30.13"
}

теперь сначала читать из ENV, иначе выбрать значение по умолчанию из приложения конфигурации. js

const config = require('config');
const dbConfig = process.env.DB_HOST || config.get('db_host');
console.log(dbConfig)

Теперь запустите docker контейнер

Постройте контейнер

docker build -t app .

Запустите контейнер

docker run -it app

Консольный вывод

10.155.30.13

Сейчас мы хотим переопределить эти значения по умолчанию

docker run -e DB_HOST=192.168.0.1 -it app

консольный вывод

192.168.0.1

enter image description here

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