Docker将PHP容器连接到MySQL
我有两个容器,apache-php容器和一个mysql db容器。 我想让我的PHP脚本来查询我的SQL数据库。 但是,我收到以下错误;
Fatal error: Uncaught PDOException: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known
和
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory
当切换主机地址,我想我错过了一些基本的docker工人,这是我的疯狂。
我的docker写作看起来像;
version: '2' services: applications: image: tianon/true volumes: - /var/www/test:/var/www/html mysql_store: image: tianon/true volumes: - /var/www/test/mysql:/var/lib/mysql apache2: build: context: ./apache2 volumes_from: - applications ports: - "80:80" depends_on: - mysql links: - mysql mysql: build: context: ./mysql volumes_from: - mysql_store environment: - MYSQL_DATABASE=testapp - MYSQL_USER=johnm - MYSQL_PASSWORD=johnm - MYSQL_ROOT_PASSWORD=secret volumes: - ./mysql/save:/var/lib/mysql ports: - "3306:3306"
我的mysqldocker文件看起来像
FROM mysql:8 MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> ##################################### # Set Timezone ##################################### ARG TZ=UTC ENV TZ ${TZ} RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN chown -R mysql:root /var/lib/mysql/ ADD my.cnf /etc/mysql/conf.d/my.cnf CMD ["mysqld"] EXPOSE 3306
我的apache dockerfile看起来像;
FROM php:7.0-apache #COPY ./src/ /var/www/html/i #RUN apt-get update && add-apt-repository ppa:ondrej/php && apt-get update && apt-get install php7.0-mysql RUN apt-get update && apt-get install -y \ && docker-php-ext-install pdo pdo_mysql \ && docker-php-ext-enable pdo pdo_mysql
最后我的index.php看起来像
<?php $db = new PDO('mysql:host=localhost;port=3306;dbname=testapp', 'root', 'secret'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); var_dump($db->query('SELECT * from users'));
对于我的数据库主机,我试过“db”,“localhost”和“127.0.0.1”。
任何帮助,将不胜感激!
您需要使用的DNS名称是服务名称: mysql
:
$db = new PDO('mysql:host=mysql;port=3306;dbname=testapp', 'root', 'secret');
因为你是这样命名的MySQL撰写服务:
mysql: build: context: ./mysql ...
- pipe理多个群集
- docker-compose什么时候构build一个本地图像,什么时候从docker hub拉出来?
- 如何访问由docker的HyperKit创build的虚拟机?
- Docker将安装需求组合成一个共享目录
- docker –mount错误:ContainerSpec:“–mount”不是有效的存储库/标记
- docker机:getsockopt没有路由到主机
- 来自守护进程的错误响应:获取https://registry-1.docker.io/v2/:在192.168.65.1:53上拨号tcp:lookup registry-1.docker.io:没有这样的主机
- docker错误:卷指定不存在的驱动程序内存
- 获取官方Docker镜像列表