By admin |

自从接触docker以来,一直想实现这种玩法。如下是步骤

  • 1:建立基于docker的mysql,参考文章

Mac上将brew安装的MySql改用Docker执行

  • 2:建立基于docker的php image

在当前目录,建立Dockerfile,内容如下

FROM php:7.0-cli
MAINTAINER Terry Zhang <zterry@qq.com>

RUN docker-php-ext-install pdo_mysql mysqli
  • 3.建立php镜像

docker build -t php-mysql .
  • 4. 编写php脚本,可以从mysql数据库读取数据:

<?php
$host = 'mysql';
$user = 'root';
$pwd = 'password';
$db = 'test';
$mysqli = new mysqli($host, $user, $pwd, $db);

if ($mysqli->connect_errno) {
  echo "Errno: " . $mysqli->connect_errno . "\n";
}

$sql = 'SELECT * FROM users';
if ($res = $mysqli->query($sql)) {
    while ($row = $res->fetch_assoc()) {
        print_r($row);
    }
}
?>
  • 5. 执行php的容器,参数如下:bash docker run -it --rm -v (pwd):/var --link my-mysql-server1:mysql php-mysql:latest php /var/mysql.php

需要注意的地方是--link参数,这里调用的是名为my-mysql-server1的容器,其在php容器中的host为mysql。可以通过如下命令进行验证:

docker run -it --rm php-mysql ping mysql

如果一切顺利,则会看到输出结果;如果有问题,自行调试。