Назад | Перейти на главную страницу

Как получить доступ к консоли mysql в контейнере Docker с помощью секретов

Мне удалось получить доступ к консоли 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

Хотя это была очень глупая ошибка, я не удаляю вопрос, так как это может сэкономить чужое время.