Docker – 为PHP + Nginx安装PDO驱动程序
我有一个Dockerfile:
FROM php:7-fpm RUN apt-get update \ && apt-get install -y --no-install-recommends libpq-dev \ && docker-php-ext-install mysqli pdo_pgsql pdo_mysql
然后我在我的docker-compose.yml文件中:
web: image: nginx:latest ports: - "80:80" volumes: - ./frontend:/var/www/html - ./api:/var/www/html/api - ./nginx/default.conf:/etc/nginx/conf.d/default.conf links: - php mysql: image: mariadb ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=example volumes: - ./database:/var/lib/mysql php: image: php:7-fpm volumes: - ./frontend:/var/www/html - ./api:/var/www/html/api links: - mysql
然后在我的PHP代码中我有:
<?php $servername = "localhost"; $username = "root"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=example", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
当我去连接到我的数据库时,我得到:
连接失败:找不到驱动程序
我将如何使用这个docker设置下载PDO驱动程序?
有两个问题:
1.)Dockerfile应该像这样来安装pdo驱动程序:
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libpq-dev \ && rm -rf /var/lib/apt/lists/* \ && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-install gd mbstring pdo pdo_mysql pdo_pgsql
2.)要从PHP连接到MySQL,您需要使用dockerfile(mysql)不是localhost的名称,如下所示:
$conn = new PDO("mysql:host=mysql;dbname=example", root, password);
- Docker MariaDB / Mysql转储
- Docker pip安装创buildrecursiontmp / pip-build / tmp / pip-build …文件夹
- 在另一个docker-compose容器中运行Python脚本
- Travis无法停止Docker容器
- 我可以使用LXD图像创buildDocker容器和/或反之亦然?
- 如何在构buildDocker镜像时习惯性地访问敏感数据?
- 使用vs代码从Windows远程debugging部署在docker上的dotnet核心应用程序
- docker未知标志: – networking
- 如何与docker共享一个networking接口而不会导致错误?