Переменные среды Docker¶
При запуске контейнера Docker с MyDB Сервер вы можете настроить конфигурацию экземпляра при помощи добавления переменных среды в команду docker run
.
Эти переменные ни на что не повлияют, если вы запустите контейнер с каталогом данных, который уже содержит базу данных. Любая ранее существовавшая база данных остается нетронутой при запуске контейнера.
Переменные являются необязательными, но необходимо указать хотя бы одно из следующих значений:
-
MYSQL_DATABASE
— имя схемы базы данных, которая создается при запуске контейнера. -
MYSQL_USER
— создать учетную запись пользователя при запуске контейнера -
MYSQL_PASSWORD
— используется сMYSQL_USER
для создания пароля для этой учетной записи пользователя. -
MYSQL_ALLOW_EMPTY_PASSWORD
— создает пользователя root с пустым паролем. Этот вариант небезопасен, и его следует использовать только для тестирования или проверки концепции, когда базу данных можно впоследствии удалить. Кто угодно может подключиться как root. -
MYSQL_ROOT_PASSWORD
— этот пароль используется для учетной записи пользователяroot
. Этот вариант не рекомендуется для производственной среды. -
MYSQL_RANDOM_ROOT_PASSWORD
— установите эту переменную вместоMYSQL_ROOT_PASSWORD
, если вы хотите, чтобы сервер MyDB сгенерировал для вас пароль. Сгенерированный пароль доступен в логах контейнера только при первом запуске. Используйтеdocker logs
. После первого запуска восстановить пароль невозможно.
Для дополнительной защиты вашего экземпляра используйте переменную MYSQL_ONETIME_PASSWORD
.
Эти переменные видны любому, кто может запустить docker inspect
.
$ docker inspect mydb
Ожидаемый результат
...
"Env": [
"MYSQL_ROOT_PASSWORD=root",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"MYDB_VERSION=8.4.0-1.1",
"OS_VER=el8",
"FULL_MYDB_VERSION=8.4.0-1.1.el8"
]
...
Если это нежелательно, вместо этих переменных вам следует использовать Docker-секреты или Docker-тома.
MyDB Сервер для MySQL также позволяет добавлять суффикс _FILE
к имени переменной. Этот суффикс позволяет добавить значение из файла по указанному пути, чтобы его нельзя было увидеть снаружи контейнера.