Estoy montando un wamp. Docker-compose funcionaba muy bien hasta que experimenté algunos problemas con el contenedor phpmyadmin y mysql. No pude conectarme ni desde php o phpmyadmin y generalmente recibí este mensaje de error: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
Pude resolver el problema simplemente conectándome ingresando el shell del contenedor db docker exec -it db mysql -uroot -p y ejecutando este comando: ALTER USER 'root' IDENTIFIED WITH mysql_native_password by '123456'; Pero esto es un poco aburrido porque tengo un socio que trabaja en el mismo proyecto y tenemos que cambiar mucho las publicaciones de trabajo, por lo que significa volver a ejecutar docker cada vez en la fase de desarrollo, así que me preguntaba qué está mal en mi docker-compose...
Aquí está :
version: "3.1" services: www: build: . container_name: app ports: - "8001:80" volumes: - ~/Desktop/WORK_in_progress/camagru/www/:/var/www/html/ links: - db networks: - default db: image: mysql:8.0 container_name: db restart: always tty: true ports: - "3306:3306" command: --default-authentication-plugin=mysql_native_password command: --innodb-use-native-aio=0 environment: MYSQL_DATABASE: CAMAGRU MYSQL_USER: user MYSQL_PASSWORD: 123456 MYSQL_ROOT_PASSWORD: 123456 volumes: - ~/Desktop/WORK_in_progress/camagru/dump:/docker-entrypoint-initdb.d - ~/Desktop/WORK_in_progress/camagru/conf:/etc/mysql/conf.d - persistent:/var/lib/mysql networks: - default phpmyadmin: container_name: phpmyadmin restart: always tty: true image: phpmyadmin/phpmyadmin links: - db:db ports: - 8000:80 environment: MYSQL_USER: user MYSQL_PASSWORD: 123456 MYSQL_ROOT_PASSWORD: 123456 volumes: persistent:nota: no uso ningún archivo de configuración, modifiqué un poco una composición que encontré en línea.
Su comando es correcto, el problema aparece porque ha definido la tecla de command dos veces y la segunda anula la primera. En su lugar, debe definirlo solo una vez y así:
command: --default-authentication-plugin=mysql_native_password --innodb-use-native-aio=0