我在 http://localhost:8080/index.php 中出错 用户布拉利昂通行证 123
Cannot log in to the MySQL server
mysqli_real_connect(): php_network_getaddresses: getaddrinfo failed: Try again
mysqli_real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Try again
这是我的docker_compose.yml
version: "3.1"
services:
webserver:
image: nginx:alpine
container_name: bralion-webserver
working_dir: /application
networks:
itbcode_net:
ipv4_address: 10.3.0.11
volumes:
- .:/application
- ./itbcode_docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8089:80"
mysql:
image: mysql:5.7
container_name: bralion-mysql
working_dir: /application
networks:
itbcode_net:
ipv4_address: 10.3.0.12
volumes:
- .:/application
- ./var/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123
- MYSQL_DATABASE=bralion
- MYSQL_USER=bralion
- MYSQL_PASSWORD=123
- MYSQL_ALLOW_EMPTY_PASSWORD=true
ports:
- "8088:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- '8080:80'
php-fpm:
build: itbcode_docker/php-fpm
container_name: bralion-php-fpm
working_dir: /application
networks:
itbcode_net:
ipv4_address: 10.3.0.13
volumes:
- .:/application
- ~/.ssh/:/root/.ssh/
- ~/.bash_history:/root/.bash_history
- ./itbcode_docker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
redis:
image: redis:alpine
container_name: sd-redis
更新 1
i 更新配置(添加 ~/.composer 并将 phpmyadmin 添加到 itb_network)
version: "3.1"
services:
webserver:
image: nginx:alpine
container_name: bralion-webserver
working_dir: /application
networks:
itbcode_net:
ipv4_address: 10.3.0.11
volumes:
- .:/application
- ./itbcode_docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8089:80"
mysql:
image: mysql:5.7
container_name: bralion-mysql
working_dir: /application
networks:
itbcode_net:
ipv4_address: 10.3.0.12
volumes:
- .:/application
- ./var/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123
- MYSQL_DATABASE=bralion
- MYSQL_USER=bralion
- MYSQL_PASSWORD=123
- MYSQL_ALLOW_EMPTY_PASSWORD=true
ports:
- "8088:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
networks:
itbcode_net:
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- '8080:80'
php-fpm:
build: itbcode_docker/php-fpm
container_name: bralion-php-fpm
working_dir: /application
networks:
itbcode_net:
ipv4_address: 10.3.0.13
volumes:
- .:/application
- ~/.ssh/:/root/.ssh/
- ~/.composer/:/root/.composer/
- ~/.bash_history:/root/.bash_history
- ./itbcode_docker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
redis:
image: redis:alpine
container_name: sd-redis
networks:
itbcode_net:
elastic-search:
image: willdurand/elk
networks:
itbcode_net:
container_name: bralion-elastic
ports:
- 81:80
volumes:
- ./elk/logstash:/etc/logstash
- ./elk/logstash/patterns:/opt/logstash/patterns
# node:
# build:
# context: ./itbcode_docker/node
# working_dir: /srv
# volumes:
# - ./:/srv/
networks:
itbcode_net:
driver: bridge
ipam:
config:
- subnet: 10.3.0.0/16
问题是两个容器位于不同的网络中。phpmyadmin
容器仅在default
网络中(因为您没有为其指定其他网络),mysql
容器仅在itbcode_net
网络中(指定另一个网络后,除非还添加- default
,否则该容器将从default
网络中删除)。您需要将phpmyadmin
添加到itbcode_net
或mysql
添加到default
,否则它们无法相互通信。
webserver
、mysql
和php-fpm
都在网络itbcode_net
上。
phpmyadmin
和redis
不是那么phpmyadmin
找不到那个地址。