php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法

php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法 - 斌哥tobin - 博客园 (cnblogs.com)

  • php要连接docker中运行的mysql是不能用localhost, 127.0.0.1来连接的,因为每个docker运行容器的localhost 127.0.0.1都是自己容器本身,不是mysql容器,需要修改成母机 IP,或者是mysql容器名称

  • 比如有如下的docker-compose.yml

version: '3'

services:
  mysql:
#   build: ./mysql
    image: daocloud.io/library/mysql:5.7.20
    volumes:
      - ./mysql/conf:/etc/mysql
      - ./mysql/data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
      - "3306:3306"
    networks:
      - lnmp

  php54:
    build: ./php54
#  # 使用宿主:容器 (HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以
#  # 开放9000端口
    ports:
      - "9005:9000"
#  # 此处实现文件夹代码目录映射
    volumes:
      - ../:/data
      - ./php54/hosts:/etc/hosts
      - ./php54/etc/php/php.ini:/usr/local/etc/php/php.ini
      - ./php54/etc/php-fpm.conf:/usr/local/etc/php-fpm.conf
    links:
      - mysql
    privileged: true
    networks:
      - lnmp
  nginx:
    build: ./nginx
  # 此处实现文件夹代码目录映射
    volumes:
      - ../:/data
      - ./php54/hosts:/etc/hosts
    links:
      - php54:php54
    privileged: true
    ports:
      - "80:80"
    networks:
      - lnmp

networks:
  lnmp:
    driver: bridge
  • php中连接的 mysql 地址就是 mysql就可以连接了,不用 localhost 或127.0.0.1

 

 

cybuster:
两个container需要通信的时候需要在主动连接那侧加上 --link 容器名:别名  的参数

cybuster:
docker run -d -e PMA_ARBITRARY=1 --link charming_liskov:mysql -p 8080:80 phpmyadmin/phpmyadmin

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(547)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-03-11 CSS opacity 属性
2021-03-11 nvarchar(max) still being truncated
2020-03-11 The view 'Index' or its master was not found.
2019-03-11 JMeter -- Getting Started
2019-03-11 237. Delete Node in a Linked List
2016-03-11 SuperSocket中的Server的初始化和启动
2016-03-11 SuperSocket中的Server是如何初Start的
点击右上角即可分享
微信分享提示