诡异问题-搭建docke环境后连接数据库mariadb出现php_network_getaddresses错误

搭建docke环境后连接数据库mariadb出现SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again异常

宿主机连接正常数据库正常

docker-compose.yaml文件

version: "3.9"

x-logging:

 &default-logging

 options:

 max-size: '50m'

 max-file: '5'

 driver: json-file

networks:

 phiz_network:

 driver: bridge

services:

 mariadb:

 command:

- --character-set-server=utf8mb4

- --collation-server=utf8mb4_general_ci

- --max-allowed-packet=1000000000

 container_name: mariadb

 restart: always

 environment:

- MYSQL_ROOT_PASSWORD=sdfsdfxcvxcv46KFHAFFEZ

 image: mariadb

 ports:

- 3306:3306/tcp

 volumes:

- ./mariadb/data:/var/lib/mysql:rw

- ./mariadb/conf.d:/etc/mysql/conf.d:rw

 networks:

- phiz_network

 logging: *default-logging

 redis:

 # command:

 #   - redis-server

 #   - /usr/local/etc/redis/redis.conf

 volumes:

- ./redis:/usr/local/etc/redis

 container_name: redis

 restart: always

 image: redis

 ports:

- 6379:6379/tcp

 networks:

- phiz_network

 logging: *default-logging

 php-fpm:

 container_name: php-fpm

 user: root

 image: simpleman/php-fpm:7.4.33

 # image: simpleman/7.3.33-fpm-alpine3.14

 restart: always

 ports:

- "9000:9000"

 volumes:

 # - ./retail_shopping_backend:/www:rw

- D:\powerbank\backend\admin-api:/www:rw

 networks:

- phiz_network

 logging: *default-logging

 nginx:

 # command:

 #   - 'nginx -g daemon off;'

 container_name: nginx

 restart: always

 image: nginx

 ports:

- 8081:8081/tcp

 volumes:

 # - ./retail_shopping_backend:/usr/share/nginx/html:rw

      -  D:\powerbank\backend\admin-api:/usr/share/nginx/html:rw

- ./nginx/conf:/etc/nginx/conf.d:ro

 networks:

- phiz_network

 logging: *default-logging
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

同一个网络下的话 redis的配置host写redis容器名就行了,不知道为何,但是可行。

1年前 评论
讨论数量: 14

php 中 mysql 的连接地址改成: mariadb, 端口用 内部 的 3306

1年前 评论
SammlHui (楼主) 1年前
kis龍 (作者) 1年前
kis龍 (作者) 1年前
SammlHui (楼主) 1年前

提问题没毛病,这代码格式可以调整成带缩进的。多余的空行也可以去掉。

1年前 评论

本地有挂代理吗?是不是代理使用的网段和docker的冲突了

1年前 评论

docker-compose.yml

php-fpm:
下面 添加

  depends_on:
            - redis
            - mariadb
        links:
            - redis
            - mariadb
1年前 评论

直接用服务器ip 试试

1年前 评论

盲猜是容器间的通信问题

1年前 评论
sanders

.env 里面的 MYSQL 配置怎么写的?如果用 sail 的话会直接读取.env 文件来同时应用 docker-compose.yaml 和 php 的容器,做本地环境会容易很多。

1年前 评论

同一个网络下的话 redis的配置host写redis容器名就行了,不知道为何,但是可行。

1年前 评论
  • ./mariadb/conf.d:/etc/mysql/conf.d:rw 这个目录重新赋予 644权限 试试
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!