Почему контейнер MySQL Docker жалуется на то, что MYSQL_ROOT_PASSWORD env должен быть определен при использовании секретов Docker 17.03?
Я пытаюсь адаптировать секретный пример Docker для Wordpress (ссылка ниже) для работы в моей настройке Docker Compose (для Drupal).
https://docs.docker.com/engine/swarm/secrets/
Однако, когда контейнер mysql запускается, выдается следующая ошибка:
"ошибка: база данных не инициализирована, а опция пароля не указана. Вам нужно указать один из MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD и MYSQL_RANDOM_ROOT_PASSWORD"
Я создал секреты с помощью команды "docker secret create":
docker secret create mysql_root_pw tmp-file-holding-root-pw.txt
docker secret create mysql_pw tmp-file-holding-pw.txt
После выполнения вышеизложенного секреты "mysql_root_pw" и "mysql_pw" теперь существуют в среде роя. Проверено, делая:
docker secret ls
Вот соответствующие части из моего файла docker-compose.yml:
version: '3.1'
services:
mysql:
image: mysql/mysql-server:5.7.17
environment:
- MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_pw"
- MYSQL_PASSWORD_FILE="/run/secrets/mysql_pw"
secrets:
- mysql_pw
- mysql_root_pw
secrets:
mysql_pw:
external: true
mysql_root_pw:
external: true
Когда я выполняю "Docker Stack развертывание MYSTACK", я получаю ошибку, упомянутую выше, при попытке запуска контейнера "mysql".
Похоже, что "MYSQL_PASSWORD_FILE" и "MYSQL_ROOT_PASSWORD_FILE" не являются стандартными переменными среды, распознаваемыми MySQL, и все еще ожидает переменную среды "MYSQL_ROOT_PASSWORD".
Я использую Docker 17.03.
Какие-либо предложения?
Благодарю.
1 ответ
Вы получаете эту ошибку, если ваш секрет также является пустой строкой. Это то, что случилось со мной, секрет смонтирован и служба настроена правильно, но все равно не работает, потому что нет пароля.