Docker compose - переменные окружения содержат точку - PullRequest
0 голосов
/ 01 апреля 2020

Некоторые услуги, например. asticsearch и другие ... должны устанавливать переменные окружения с точками, например: discovery.type = single-node

Я хочу поместить его в файл, что не является проблемой ...

    something:
        build: './imagelocation/'
        env_file: 
          - .env

.env файл содержит, например ::

EL_ENVIRONMENT=development
discovery.type=single-node

и «discovery.type = single-node» не работает, я знаю, почему не работает.

Как это выяснить без обходного пути? (и без проблем безопасности, не хотите использовать в docker run -e end et c)

1 Ответ

0 голосов
/ 22 апреля 2020

Я использую формат 3.7 docker, и он работает без проблем. Однако помните, что если docker -compose должен использовать их автоматически, вы должны использовать свойство env_file: в docker-compose.yml. Мой сервис настроен следующим образом:

version: '3.7'
services:
  elasticsearch:
    container_name: elasticsearch
    build: elasticsearch
    image: my-elasticsearch:latest
    ports:
      - "9200:9200"
      - "9300:9300"
    env_file:
      - .env

Мой .env файл:

ES_JAVA_OPTS=-Xmx3g -Xms3g
xpack.security.enabled=false
cluster.name=elasticsearch
discovery.type=single-node

В этом случае файл .env может иметь произвольное имя, поскольку мы указываем его имя в файл docker-compose.yml.

При запуске контейнера я вижу, что Elasticsearch запущен с соответствующим параметром:

elasticsearch      | [2020-04-22T06:43:36,239][INFO ][o.e.d.DiscoveryModule    ] [K_7KyC-] using discovery type [single-node]

Другой подход

Вы можете использовать параметр из файла .env непосредственно. Давайте создадим наши собственные параметры в файле .env (используйте любые имена):

ES_JAVA_OPTS=-Xmx3g -Xms3g
ES_XPACK_SECURITY_ENABLED=false
ES_CLUSTER_NAME=elasticsearch
ES_DISCOVERY_TYPE=single-node

... и в вашем файле docker-compose.yml используйте эти переменные, например:

version: '3.7'
services:
  elasticsearch:
    container_name: elasticsearch
    build: elasticsearch
    image: my-elasticsearch:latest
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - ES_JAVA_OPTS=${ES_JAVA_OPTS}
      - xpack.security.enabled=${ES_XPACK_SECURITY_ENABLED}
      - cluster.name=${ES_CLUSTER_NAME}
      - discovery.type=${ES_DISCOVERY_TYPE}

Просто помните, что на этот раз вам нужно иметь файл с именем .env или экспортировать это окружение в вашу оболочку, например: export ES_XPACK_SECURITY_ENABLED=true.

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