Почему контейнер MySQL Docker жалуется, что MYSQL_ROOT_PASSWORD env должен быть определен при использовании секретов Docker 17.03?

Я пытаюсь адаптировать секретный пример Docker Wordpress (ссылка ниже) для работы в моей настройке Docker Compose (для Drupal).

https://docs.docker.com/engine/swarm/secrets/#/advanced-example-use-secrets-with-a-wordpress-service

Однако, когда контейнер 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 deploy MYSTACK», я получаю указанную выше ошибку при попытке запуска контейнера mysql.

Похоже, что «MYSQL_PASSWORD_FILE» и «MYSQL_ROOT_PASSWORD_FILE» не являются стандартными переменными среды, распознаваемыми MySQL, и он все еще ожидает переменную среды «MYSQL_ROOT_PASSWORD».

Я использую Docker 17.03.

Какие-либо предложения?

Спасибо.


person kvjava1    schedule 16.03.2017    source источник
comment
Фактически вы сами ответили на свой первоначальный вопрос. У вас есть еще вопросы?   -  person Klaus D.    schedule 17.03.2017
comment
Эй, я только что протестировал это (не совсем это - docker service create из статьи) и получил те же ошибки, что и вы. После прочтения статьи я увидел в конце заметку, информирующую пользователей о том, что изображения необходимо обновить, чтобы учесть секреты. Я взглянул на дату, когда образ mysql добавил поддержку, и обнаружил, что это была . Мой локальный образ был старше этого, поэтому я запустил docker pull mysql:latest и получил недавнее изображение. Повторно запустил команду и она запустилась :)   -  person William Patton    schedule 17.03.2017
comment
Спасибо за ответ Уильям. Очень интересно! Я только что настроил свой хост (Ubuntu 16.04) пару недель назад (образы Docker не сняты) с установкой Docker 17.03 и запустил развертывание стека докеров ... со следующим в моем файле docker-compose.yml: services: mysql: image: mysql/mysql-server:5.7.17 так что он должен был удалить последний образ 5.7.17 пару недель назад. Когда я делаю docker image ls, он показывает mysql / mysql-server для РЕПОЗИТОРИИ, но ‹none› для ТЕГА. Я выясню, как загрузить конкретный образ mysql 5.7.17 и дам вам знать.   -  person kvjava1    schedule 17.03.2017
comment
По какой-то причине образ mysql / mysql-server: 5.7.17 прикреплен, по крайней мере, для меня, к этому дайджесту: Дайджест: sha256: 083f7ef16586208dce7275c84d7d7085e1acaf2caf2d0443e8827d191296099c. Если я просматриваю изображение (docker inspect <IMAGE-ID>), оно говорит: Создано: 2017-02-16T07: 06: 16.474620534Z. Я посмотрю, смогу ли я найти дайджест для изображения, содержащего исправление секретов _FILE, и попробую вытащить mysql по этому дайджесту ...   -  person kvjava1    schedule 17.03.2017
comment
Уильям, все заработало. На самом деле я использовал изображение mysql / mysql-server: 5.7.17 вместо mysql: 5.7.17. Ваш ответ помог мне решить мою проблему, поэтому, если вы повторно опубликуете свой ответ и добавите в конце, попробуйте изображение mysql: 5.7.17 вместо изображения mysql / mysql-server: 5.7.17 в качестве Docker Секреты улучшения могли быть добавлены только к первому. Я отмечу это как правильный ответ и отдаю вам должное. В очередной раз благодарим за помощь. Теперь мне просто нужно выяснить, как заставить секреты Docker работать в контейнере drupal. ;) Еще раз спасибо!   -  person kvjava1    schedule 18.03.2017


Ответы (1)


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

person FreshPow    schedule 01.10.2017