1、拉取镜像
docker pull nginx
docker pull php:7.1-fpm
docker pull mysql:5.7
2、创建文件夹
mkdir -p /docker/www
mkdir -p /docker/nginx/conf.d/
mkdir -p /docker/mysql/data
mkdir -p /docker/mysql/conf.d
3、创建 Nginx 容器
docker run -p 8080:80 --name nginx \
-v /docker/www:/usr/share/nginx/html \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-d nginx
4、创建 PHP 容器
docker run -p 9000:9000 --name php-fpm \
-v /docker/www:/var/www/html \
-d php:7.1-fpm
5、查看 PHP 容器的IP
docker inspect php-fpm --format='{{.NetworkSettings.IPAddress}}'
# 返回 IP
172.17.0.3
6、创建 Nginx 配置文件
vim /docker/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
location ~ \.php(.*)$ {
root /var/www/html; # php 容器的目录,进 php 容器查看
fastcgi_pass 172.17.0.3:9000; # php 容器的IP
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 如果修改主机目录,如下两处都要修改
# root /usr/share/nginx/html;
# root /var/www/html;
docker restart nginx // 重启一下 nginx 容器
7、测试页
echo "<?php phpinfo(); ?>" > /docker/www/info.php
8、成功访问
http://192.168.1.73:8080/info.php
9、创建 MySQL 容器
docker run --name mysql -p 3306:3306 \
-v /docker/mysql/conf.d:/etc/mysql/conf.d \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
10、查看 MySQL 容器的 IP
docker inspect mysql --format='{{.NetworkSettings.IPAddress}}'
# 返回 IP
172.17.0.4
11、连接 MySQL
vim /docker/www/conn.php
<?php
$serve = '172.17.0.4:3306';
$username = 'root';
$password = '123456';
$dbname = 'mysql';
$mysqli = new Mysqli($serve,$username,$password,$dbname);
if ($mysqli->connect_error) {
die('connect error:'.$mysqli->connect_errno);
}
$mysqli->set_charset('UTF-8');
$result = $mysqli->query('select * from user');
$data = $result->fetch_all();
print_r($data);
?>
12、PHP 安装 MySQLI 扩展
# 进入容器
docker exec -it php-fpm /bin/bash
# 安装 pdo_mysql mysqli
docker-php-ext-install pdo_mysql mysqli
# CTRL + D 退出容器
docker restart php-fpm
13、成功访问
curl http://192.168.1.73:8080/conn.php
# 返回
Array
(
[0] => Array
(
[0] => %
[1] => root
)
[1] => Array
(
[0] => localhost
[1] => mysql.session
)
[2] => Array
(
[0] => localhost
[1] => mysql.sys
)
[3] => Array
(
[0] => localhost
[1] => root
)
)