Переменные среды не устанавливаются в контейнере Docker с использованием docker-compose.yml - PullRequest
0 голосов
/ 08 июня 2018

У меня есть файл .env, как показано ниже:

# DEV
SALES_DB_HOST=xxx

Затем у меня есть файл docker-compose.yml, который выглядит следующим образом:

version: "3.1"
services:
  web:
    image: xxx
    build: .
    env_file: .env

Однако значения для средыпеременные при доступе к nodejs, например process.env.SALES_DB_HOST, выводят undefined.

Вывод docker-compose config:

services:
  web:
    build:
      context: xxxxxxxx
    environment:
      SALES_DB_HOST: xxx
    image: xxxxx
version: '3.1'

Таким образом, похоже, что docker-compose.yml сформирован правильно.Но почему process.env неправильно получает это значение?

РЕДАКТИРОВАТЬ:

Я создаю образ докера с: docker build -t my_image .

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Можете ли вы изменить команду конфигурации вашего контейнера в файле yml.Вы должны попытаться проверить свою среду, чтобы понять - в чем проблема.В докере или в вашем коде.

Попробуйте что-то вроде этого:

maxantonov : ~/passbolt  .$ cat dc.yml
version: '3.4'
services:
  db:
    image: alpine:latest
    container_name: db
    hostname: db
    env_file:
      - env/mysql.env
    command: ["printenv"]

maxantonov : ~/passbolt  .$ docker-compose -f dc.yml up
Starting db ... done
Attaching to db
db    | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
db    | HOSTNAME=db
db    | MYSQL_ROOT_PASSWORD=test
db    | MYSQL_DATABASE=passbolt
db    | MYSQL_USER=passbolt
db    | MYSQL_PASSWORD=P4ssb0lt
db    | HOME=/root
db exited with code 0
0 голосов
/ 08 июня 2018

Это не проблема докера.Посмотрите на ваш код:

process.env.process.env.SALES_DB_HOST

Это опечатка. process.env.process.env

Вы должны использовать

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