1. lamp
2. 0x01 php
2.1. php:5.6-apache
Dockerfile: FROM php:5.6-apache
, FROM daocloud.io/php:5.6-apache
(国内)
默认 DOCUMENT_ROOT: /var/www/html
3. 0x02 mysql
3.1. 简单使用
默认在 3306 端口启动数据库, MySQL 初始化完成前无法连接
- 运行 mysql 实例
$ sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
- 其它应用来连接到 mysql 容器。
$ sudo docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
- 从 mysql 命令行客户端连接 mysql 容器
$ sudo docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
3.2. LAMP with mysql
FROM php:5.6-apache
RUN docker-php-ext-install mysql
3.3. LAMP with pdo_mysql
php 安装 pdo_mysql 扩展
FROM php:5.6-apache
# docker-php-ext-install 为官方 PHP 镜像内置命令,用于安装 PHP 扩展依赖
# pdo_mysql 为 PHP 连接 MySQL 扩展
RUN docker-php-ext-install pdo_mysql (pdo: php data objects)
php 应用程序代码访问数据库
<?php
$serverName = env("MYSQL_PORT_3306_TCP_ADDR", "localhost");
$databaseName = env("MYSQL_INSTANCE_NAME", "homestead");
$username = env("MYSQL_USERNAME", "homestead");
$password = env("MYSQL_PASSWORD", "secret");
/**
* 获取环境变量
* @param $key
* @param null $default
* @return null|string
*/
function env($key, $default = null)
{
$value = getenv($key);
if ($value === false) {
return $default;
}
return $value;
}
?>