docker run php-app这时候,容器将会执行我们之前创建的 app.php, 并输出:
Hello Docker!PHP + MySQL 的Docker化示例
接下来,我们通过一个 PHP + MySQL 的例子,介绍 PHP 应用 Docker 化之后,如何连接数据库。
创建一个新的目录 php-mysql 作为我们的项目目录
<?php
$mysql = new mysqli(&#39;db&#39;, &#39;root&#39;, $_ENV[&#39;MYSQL_ROOT_PASSWORD&#39;]);
echo &#39;Connected to mysql: &#39;.$mysql->host_info;
?>在 index.php 中,我们的 PHP 应用将会通过主机名称 db 连接到 mysql 数据库,同时使用用户名 root, 以及环境变量中的 MYSQL_ROOT_PASSWORD对数据库进行连接。这里简单地通过echo 连接信息来确认 MySQL 连接是否正常。
在项目目录下创建 Dockerfile
FROM php:5.6-apache
RUN docker-php-ext-install mysqli
COPY . /var/www/html这里我们使用的是官方的 php:5.6-apache 镜像,因为我们这一次希望可以直接从浏览器访问这个 PHP 应用。
另外我们通过 RUN 指令运行 docker-php-ext-install mysqli 额外安装了PHP的mysqli扩展
构建镜像
docker build -t php-mysql-app .
创建 MySQL 容器
docker run --name db -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.6我们在这里使用官方的 mysql:5.6 镜像创建了一个 MySQL 的容器
--name 参数将容器命名为 db
-e MYSQL_ROOT_PASSWORD=secret 通过环境变量,我们将 MySQL 的 root 用户密码设置为 secret
-d 参数将这个容器设置为后台运行
启动 PHP 容器,并将其连接到 MySQL 容器
docker run --link db -e MYSQL_ROOT_PASSWORD=secret -p 8080:80 php-mysql-app我们运行了之前构建的 php-mysql-app 镜像,并将上一步创建的 mysql-instance 这个MySQL容器和它连接,同时我们把MySQL的root密码通过环境变量MYSQL_ROOT_PASSWORD 传到容器内部-p 8080:80 将容器的 80 端口映射到了主机的 8080 端口
从浏览器访问 http://127.0.0.1:8080
Connected to mysql: db via TCP/IP我们将从浏览器得到 index.php 的执行结果。 基于cSphere 私有Docker Registry的镜像自动构建