2 votes

Comment accéder à la console mysql sur un conteneur Docker en utilisant des secrets ?

J'ai pu accéder à la console Mysql sur un conteneur Docker Mariadb.

Depuis ma machine locale, je peux exécuter cette commande pour accéder à la console (j'ai installé mariadb localement) :

mysql -h localhost -P 3306 -u lc -p --protocol tcp

Le problème survient lorsque j'essaie d'utiliser les secrets Docker au lieu d'écrire explicitement mot de passe sur le docker-compose.yml fichier.

Configuration de travail

Ainsi, je peux accéder à la console mysql :

services:
  mariadb:
    image: mariadb
    environment:
      MYSQL_DATABASE: my_db
      MYSQL_ROOT_PASSWORD: 'pw'
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - '3306:3306'

Enjeu

Dès que je déplace les secrets dans un fichier, je ne peux plus y accéder.

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

Les secrets fonctionnent parce que le conteneur Wordpress y accède facilement, donc éventuellement le mot de passe. pw est transformé en quelque chose d'autre lorsqu'il est extrait d'un secret.

Une idée ?

2voto

eol Points 171

C'est très subtil...

Si vous utilisez un fichier, la variable environnementale doit être _FILE suffixe !

MYSQL_ROOT_PASSWORD -> MYSQL_ROOT_PASSWORD_FILE

Bien qu'il s'agisse d'une erreur très stupide, je ne supprime pas la question car elle pourrait faire gagner du temps à quelqu'un d'autre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X