Docker Mysql contenant le mot de passe root [mysqld écoute le port 0]

Aujourd'hui, je suis en train de faire mon menu fixe de l'environnement de travail !

Dans cette affaire, j'ai rencontré un problème : mon MySQL conteneur, l'extension MySQL officiel Docker image, semble ne parviennent pas à créer le compte root, malgré le réglage de la MYSQL_ROOT_PASSWORD variable d'environnement dans mon docker-compose`.yml.

Je copie ici mon Panneau fichiers :

docker-composer.yml

La plupart des variables d'environnement sont utilisées dans des scripts et des applications indépendamment du serveur MySQL. Seulement MYSQL_ROOT_PASSWORD mérite d'intérêt (peut-être cette déclaration est la cause de mon incapacité à faire ce travail..! ).

mysql:
    container_name: my_mysql
    build: mysql
    environment:
        - MYSQL_DATABASES=my-database
        - MYSQL_ROOT_PASSWORD=root
        - MYSQL_HOST=127.0.0.1
        - MYSQL_PORT=33306
        - MYSQL_USER=user
        - MYSQL_PASSWORD=password
        - MYSQL_MY_DATABASE=my-database
    ports:
        - "33306:3306"
    volumes:
        - "./volumes/mysql:/var/lib/mysql"

mysql/Dockerfile

La commande dos2unix est destinée à convertir Windows fins de ligne Unix.

La coutume point d'entrée est nommé différemment pour éviter overidding la valeur par défaut de mysql point d'entrée de script.

FROM mysql:5.7
MAINTAINER Wonderful Dev <wonderful.dev@wonderful-company.com>

RUN apt-get update && apt-get install -y dos2unix

COPY conf.d/custom.cnf /etc/mysql/conf.d/
COPY docker-entrypoint-initdb.d/databases.sh /docker-entrypoint-initdb.d/databases.sh
COPY my-entrypoint.sh /my-entrypoint.sh

RUN dos2unix /docker-entrypoint-initdb.d/databases.sh && dos2unix /my-entrypoint.sh && dos2unix /etc/mysql/conf.d/custom.cnf && apt-get --purge remove -y dos2unix && rm -rf /var/lib/apt/lists/*

RUN chmod a+x /docker-entrypoint-initdb.d/databases.sh && chown root:root /docker-entrypoint-initdb.d/databases.sh
RUN chmod a+x /my-entrypoint.sh && chown root:root /my-entrypoint.sh

ENTRYPOINT ["/entrypoint.sh", "/my-entrypoint.sh"]

CMD ["mysqld"]

mysql/my-entrypoint.sh

Cette commande chmod est destinée à éviter ce genre d'erreur

#!bin/bash

chmod 664 /etc/mysql/conf.d/custom.cnf

exec "$@"

mysql/config/custom.cnf

[mysqld]
default-storage-engine=INNODB
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
bind-address        = 0.0.0.0
skip-external-locking
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
query_cache_limit   = 1M
query_cache_size        = 16M
expire_logs_days    = 10
max_binlog_size         = 100M

[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

[isamchk]
key_buffer      = 16M

Tout ça fonctionne, sauf que je n'ai pas accès à la racine, me bloque à partir de la création de bases de données ou des utilisateurs mysql pour mes applications !

Je vous remercie pour tous les conseils 😀 !

MODIFIER: Après plusieurs jours d'enquête, et un problème dans docker-library/mysql référentiel, nous avons découvert que l'un des problèmes était obsolète configuratio clé dans personnalisé.cnf.

key_buffer => key_buffer_size

Maintenant le conteneur s'exécute quelques secondes après la construction, puis crash.

Le principal indice dans les journaux, c'est que la ligne :

Version: '5.7.15'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server (GPL)

J'ai déjà essayé une solution proposée pour configurer manuellement le port de personnalisé.cnf mais il ne fonctionne pas. Le conteneur tente de se connecter à MySQL et de crash en raison de la port.

Le problème n'était pas assez visible, car lors du lancement de l'contenant un deuxième temps, l'initialisation est ignorée, le bon port a été configuré, et le serveur a bien fonctionné.

Le truc, c'est que, en raison de l'accident, à la fin de l'initialisation n'a pas été exécutée, y compris mes scripts et la création de bases de données avec les utilisateurs.

Donc j'aimerais savoir pourquoi ce fichu mysqld est à l'écoute sur le port 0 de la première fois que j'ai lancer le conteneur après la construction.

Si vous avez une idée, je serais heureux d'ici à ce sujet !

InformationsquelleAutor Kern | 2016-09-23