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.
3 Réponses :
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
Merci, j'ai changé le service, mais je crains toujours de recevoir les mêmes erreurs.
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.
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:
Pourriez-vous ajouter
PHPMYADMIN.Dockerfileà la question?