Переменная среды в контейнере PHP-Docker

Я хочу показать env var в моем контейнере докера.
PHP-скрипт выглядит так:

<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
<?php
print "env is: ".$_ENV["USER"]."\n";
?>
</body>
</html>

Я использую OpenShift для запуска контейнера. PHP-контейнер показывает:

env is:

Теперь я изменяю конфигурацию dc моего контейнера:

oc env dc/envar USER=Pieter
deploymentconfig "envar" updated

Когда я получаю доступ к контейнеру. Конвертер USER — это Питер

docker exec -it 44a0f446ae36 bash
bash-4.2$ echo $USER
Pieter

Но мой сценарий продолжает показывать: «env is:«Это не заполняет переменную.

4

Решение

Я сделал следующее, чтобы решить эту проблему:

  1. Используйте эту команду, которая записывает переменные среды в файл с именем .env в папке вашего проекта.

    CMD ["env >> /path/to/project/.env"]
    
  2. Установите пакет dotenv, который загружает переменные env из файла в $ _ENV

    composer require vlucas/phpdotenv
    
  3. Загрузите пакет и используйте его как

    require 'vendor/autoload.php'
    $dotenv = new Dotenv\Dotenv(__DIR__);
    $dotenv->load();
    getenv('VAR_NAME');
    

Надеюсь, поможет.

0

Другие решения

+ Изменить

print "env is: ".$_ENV["USER"]."\n";

в

print "env is: ".getenv("USER")."\n";

.

/# cat test.php
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
<?php
print "env via \$_ENV is: ".$_ENV["USER"]."\n";
print "env via getenv is: ".getenv("USER")."\n";
?>
</body>
</html>
/ #
/ # export USER=Sascha
/ # echo $USER
Sascha
/ # php test.php
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
PHP Notice:  Array to string conversion in /test.php on line 7
PHP Notice:  Undefined index: USER in /test.php on line 7
env via $_ENV is:
env via getenv is: Sascha
</body>
</html>
/ #
-1

По вопросам рекламы [email protected]