1
votes

Docker Compose phpmyadmin ne se connectant pas à MySQL

J'ai un fichier de composition de docker qui essaie essentiellement de créer un environnement de style WAMP / LAMP.

En gros, PHPMyAdmin ne semble pas pouvoir se connecter à MySQL. En regardant les réponses ici, il est apparu que c'était un problème avec l'authentification héritée utilisant MySQL Image 8, j'ai donc ajouté:

version: "3.1"
services:

    site: 
      build: .
      ports :
        - "80:80"
      volumes:
        - ./www:/var/www/html/
      links:
        - database
      networks:
        - php-network

#######################################
# PHP MY ADMIN
#######################################
    phpmyadmin:
      build:
        context: .
        dockerfile: PHPMYADMIN.Dockerfile
      restart: always
      links:
        - database:mysql
      environment:
        PMA_HOST: mysql
        PMA_PORT: 3306
      ports:
        - "8080:80"
      environment:
        - MYSQL_USERNAME=admin
        - MYSQL_PASSWORD=root
      networks:
        - php-network

#######################################
# MySQL server
#######################################
    database:
      image: mysql:5.7.25
      ports:
        - "3306:3306"
      container_name: db-mysql 
      restart: always 
      environment:
        - MYSQL_ROOT_PASSWORD=root
        - MYSQL_DATABASE=test_db
        - MYSQL_USER=admin
        - MYSQL_PASSWORD=root
      networks:
        - php-network

networks:
  php-network:
    driver: bridge

mais cela n'a pas fonctionné, alors je suis passé à mysql image5.7 et le problème est toujours présent. Pour une raison quelconque, je ne peux pas me connecter à MySQL et j'obtiens l'erreur:

mysqli_real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Try again

et

mysqli_real_connect(): php_network_getaddresses: getaddrinfo failed: Try again

Voici une copie de mon Docker Compose qui, à mon avis, ne fait rien de bizarre.

En espérant que quelqu'un puisse clarifier cela pour moi.

  command: --default-authentication-plugin=mysql_native_password

J'ai aussi vu mention d'un drapeau "dépend de" que j'ai essayé aussi mais qui n'a pas non plus permis de me connecter. J'ai toujours eu la même erreur.


1 commentaires

Pourriez-vous ajouter PHPMYADMIN.Dockerfile à la question?


3 Réponses :


0
votes

Selon la configuration de votre service phpmyadmin , vous essayez d'accéder au conteneur mysql par l'adresse mysql :

environment:
  PMA_HOST: database
  PMA_PORT: 3306

Mais conteneur avec mysql Le serveur est accessible par les adresses database ou db-mysql .

Vous devez donc modifier la configuration du service phpmyadmin en:

environment:
  PMA_HOST: mysql
  PMA_PORT: 3306


1 commentaires

Merci, j'ai changé le service, mais je crains toujours de recevoir les mêmes erreurs.



0
votes

Il s'agit du nom du conteneur.

database:
     image: mysql:5.7.25
     ports:
       - "3306:3306"
       - **container_name: db-mysql**

and in your phpcontainer:

 phpmyadmin:
      build:
        context: .
        dockerfile: PHPMYADMIN.Dockerfile
      restart: always
      links:
        - database:mysql
      environment:
        **PMA_HOST: mysql**
        PMA_PORT: 3306

you define host as mysql, which in docker network will be unrecognizable.
try switching PMA_HOST to db-mysql.

Désolé pour le mauvais formatage.

Utilisez également docker ps pour voir les noms des conteneurs de docker et pour déterminer les hôtes dont vous avez besoin pour vous connecter.


0 commentaires

1
votes

Cela fonctionne maintenant avec les éléments suivants:

version: "3.1"
services:
    www:
        build: .
        ports: 
            - "8081:80"
        volumes:
            - ./www:/var/www/html/
        links:
            - db
        networks:
            - default

#######################################
# MySQL server
#######################################
    db:
        image: mysql:5.7.25
        ports: 
            - "3306:3306"
        environment:
            MYSQL_DATABASE: test_db
            MYSQL_ROOT_PASSWORD: test
        volumes:
            - ./dump:/docker-entrypoint-initdb.d
            - persistent:/var/lib/mysql
        networks:
            - default

#######################################
# PHP MY ADMIN
#######################################
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links: 
            - db:db
        ports:
            - 8080:80
        environment:
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test
volumes:
    persistent:


0 commentaires