首页 web服务器 正文
31

容器中如何共用宿主的mysql.sock

场景:容器中的php应用程序需要使用localhost连接mysql数据库。(假设不想使用“127.0.0.1”或“localhost:3306”代替localhost)
条件:容器的网络模式必须为host, 即docker run --net=host 启动容器。

方法:
    1、先确定宿主机mysql.sock文件的位置。最准确的做法是运行mysql -uxxx -p -hlocalhost登入mysql.
        再运行status指令, 找到UNIX socket行,比如:UNIX socket: /var/lib/mysql/mysql.sock
       
     2、将mysql.sock所在目录共享给容器,即
     docker run --net=host -v /var/lib/mysql:/var/lib/mysql .....
     
     3、修改容器中php.ini文件中的相关配置,按需要修改以下配置项:
     mysqli.default_socket = /var/lib/mysql/mysql.sock  # 针对mysqli扩展
     pdo_mysql.default_socket = /var/lib/mysql/mysql.sock # 针对pdo_mysql扩展
    
     4、编写php脚本以验证:
     <?php
     $conn = new mysqli('localhost', 'dbuser', 'xxxx');
     echo $conn->host_info . "\n";
     ?>
     输出 Localhost via UNIX socket 证明成功。

正在加载评论...