Мне удалось получить доступ к консоли Mysql в контейнере Docker Mariadb.
На моем локальном компьютере я могу запустить эту команду для доступа к консоли (у меня локально установлен mariadb):
mysql -h localhost -P 3306 -u lc -p --protocol tcp
Проблема возникает, когда я пытаюсь использовать секреты Docker вместо того, чтобы явно писать пароль на docker-compose.yml
файл.
Итак, с этим я могу получить доступ к консоли mysql:
services:
mariadb:
image: mariadb
environment:
MYSQL_DATABASE: my_db
MYSQL_ROOT_PASSWORD: 'pw'
volumes:
- db_data:/var/lib/mysql
ports:
- '3306:3306'
Как только я перенесу секреты в файл, у меня больше не будет доступа.
services:
mariadb:
image: mariadb
environment:
MYSQL_DATABASE: my_db
MYSQL_ROOT_PASSWORD: ./env/mysql_root_password.tx
volumes:
- db_data:/var/lib/mysql
ports:
- '3306:3306'
secrets:
mysql_root_password:
file: ./env/mysql_root_password.txt
Секреты работают, потому что контейнер Wordpress легко получает к нему доступ, поэтому, возможно, пароль pw
при извлечении из секрета превращается во что-то еще.
Любая идея?
Это очень тонко ...
Если вы используете файл, переменная среды требует _FILE
суффикс!
MYSQL_ROOT_PASSWORD
-> MYSQL_ROOT_PASSWORD_FILE
Хотя это была очень глупая ошибка, я не удаляю вопрос, так как это может сэкономить чужое время.