Где объявить переменные среды в Docker и как получить к ним доступ - PullRequest
0 голосов
/ 10 мая 2018

Это то, что у меня есть в моем .yml:

version: '2'

services:
  ## Wordpress Container
  wordpress:
    ...

  ## MySql
  mysql:
    ...

  ## Nginx Container
  nginx:
    container_name: afp_nginx
    image: ng:afp
    environment:
      PHP_FPM_SOCK: wordpress:9000
      SERVER_NAME: wordpress.dev
      ENV: stage
    ports:
      - 8080:80
    volumes:
      - ./x_wordpress:/var/www/html
      - ./x_nginx/ssl:/etc/nginx/ssl

  ## Composer Container
  composer:
    ...

Когда я console.log(process.env.ENV), я получаю неопределенность.
Когда я var_dump($_ENV), моя переменная ENV тоже не определена.
Однако, когда я запускаю $ docker exec afp_nginx printenv ENV, я получаю правильный вывод 'stage'.

Как получить доступ к значению ENV внутри моего приложения (в файле JavaScript или в PHP)?
Должно ли оно быть объявлено в composer вместо nginx или где-то еще?

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Другой способ сделать это, кроме синтаксиса Dockerfile, - использовать флаг -e для запуска образа Docker, например:

docker run -eENV_VARIABLE_NAME=value hello-world
0 голосов
/ 10 мая 2018

Нашёл!
Это должно быть объявлено в контейнере WordPress так:

services:
  ## Wordpress Container
  wordpress:
    ...
    environment:
      ...
      ENV: development

Тогда к нему можно получить доступ внутри $_ENV.

Мне все еще нужен простой способ доступа к нему в javascript, так как он все еще не отображается в process.env.ENV

...