我有一个docker compose文件,该文件基本上是试图构建WAMP / LAMP风格的环境。
基本上,PHPMyAdmin似乎无法连接到MySQL。在这里查看答案,看来这是使用MySQL Image 8进行的传统身份验证的问题,因此我添加了:
command: --default-authentication-plugin=mysql_native_password
但是那没有用,所以我下降到mysql image5.7并且问题仍然存在。由于某些原因,我无法连接到MySQL,并且收到错误消息:
mysqli_real_connect(): php_network_getaddresses: getaddrinfo failed: Try again
和
mysqli_real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Try again
这是我的Docker Compose的副本,我认为这并不奇怪。
希望有人可以为我澄清一下。
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
我还看到有人提到过“ depends on”标志,我也曾尝试过,但也未能使我连接。我一直都遇到相同的错误。
答案 0 :(得分:0)
根据您的phpmyadmin
服务配置,您正在尝试通过mysql
地址访问mysql容器:
environment:
PMA_HOST: mysql
PMA_PORT: 3306
但是可以通过database
或db-mysql
地址访问带有mysql服务器的容器。
因此,您需要将phpmyadmin
服务配置更改为:
environment:
PMA_HOST: database
PMA_PORT: 3306
答案 1 :(得分:0)
关于容器名称。
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.
很抱歉格式化错误。
还可以使用docker ps查看docker容器名称并确定您需要连接哪些主机。
答案 2 :(得分:0)
我现在可以通过以下方式进行这项工作:
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: