Jelastic - как получить переменные окружения в Docker-контейнер

Как заставить заполнители среды отображаться в контейнере Docker?

Документация не совсем ясна, где их можно использовать. Я попытался просто установить те, что внутри env узла, как показано в файле JPS, который добавляется к этому вопросу.

Например, он показывает окружающую среду как env-2461411 и его имя как Environment Test в опциях среды

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

Результат

Заполнители, похоже, не заменяются, и поэтому оболочке не нравится окружение, которое она получает:

-bash: ${env.appid}: bad substitution
-bash: ${env.displayName}: bad substitution
-bash: ${env.domain}: bad substitution
-bash: ${env.envName}: bad substitution
-bash: ${env.name}: bad substitution
-bash: ${env.shortdomain}: bad substitution
-bash: ${env.url}: bad substitution
-bash: ${env.appid}: bad substitution
-bash: ${env.displayName}: bad substitution
-bash: ${env.domain}: bad substitution
-bash: ${env.envName}: bad substitution
-bash: ${env.name}: bad substitution
-bash: ${env.shortdomain}: bad substitution
-bash: ${env.url}: bad substitution

Ожидаемый результат

Переменные среды, отображаемые в среде bash, такие как

env_domain=env-2461411
env_name=Environment Test 

Пример файла JPS

{
    "jpsType": "install",
    "jpsVersion": "1.4",
    "name": "Environment Test",
    "description":
    {
        "text": "Template for testing environment variables test",
        "short": "Environment variables test"
    },
    "logo": "https://raw.githubusercontent.com/jelastic-jps/start-stop-scheduler/master/images/logo.png",
    "homepage": "https://jelastic.com/",
    "categories":
    [
        "apps/testing"
    ],
    "success":
    {
        "text": "## Environment test is up and running\nOpen the Jelastic SSH gateway and locate the test-node, see its environment with `env`"
    },
    "nodes":
    [
        {
            "image": "debian",
            "extip": false,
            "count": 1,
            "cloudlets": 16,
            "fixedCloudlets": 1,
            "nodeType": "docker",
            "nodeGroup": "test",
            "displayName": "test-node",
            "volumes":
            [
                "/root"
            ],
            "env":
            {
                "env_appid": "${env.appid}",
                "env_domain": "${env.domain}",
                "env_url": "${env.url}",
                "env_displayname": "${env.displayName}",
                "env_envname": "${env.envName}",
                "env_name": "${env.name}",
                "env_shortdomain": "${env.shortdomain}"
            }
        }
    ],
    "onInstall":
    {
        "log": "${placeholders}"
    }
}

1 ответ

Решение

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

Другие вопросы по тегам