Я использую формат 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
.