Почему контейнер 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 ответ

Вы получаете эту ошибку, если ваш секрет также является пустой строкой. Это то, что случилось со мной, секрет смонтирован и служба настроена правильно, но все равно не работает, потому что нет пароля.

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