安装 PHP 镜像
-
docker hub 上面查找 php 镜像
1
2
3
4
5
6
7
8
9
10 1[root@docker ~]# docker search php
2INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
3docker.io docker.io/php While designed for web development, the PH... 4580 [OK]
4docker.io docker.io/phpmyadmin/phpmyadmin A web interface for MySQL and MariaDB. 804 [OK]
5docker.io docker.io/php-zendserver Zend Server - the integrated PHP applicati... 166 [OK]
6docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 130 [OK]
7docker.io docker.io/webdevops/php-apache-dev PHP with Apache for Development (eg. with ... 104 [OK]
8docker.io docker.io/webdevops/php-apache Apache with PHP-FPM (based on webdevops/php) 87 [OK]
9docker.io docker.io/phpunit/phpunit PHPUnit is a programmer-oriented testing f... 74 [OK]
10
-
拉去官方的镜像,标签为5.6-fpm
1
2
3
4 1[root@docker ~]# docker pull php:5.6-fpm
2[root@docker ~]# docker images | grep php
3docker.io/php 5.6-fpm 3458979c7744 5 months ago 343.8 MB
4
Nginx + PHP 部署
-
启动 PHP:
1
2
3 1[root@docker ~]# docker run --name myphp-fpm -v ~/nginx/www:/www -d php:5.6-fpm
2e139ed8ac57b4b48dee1176e1074bb6f3e5afce9f43826337831ab2359ad9d3e
3
命令说明:
-
–name myphp-fpm : 将容器命名为 myphp-fpm。
-
-v ~/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www
-
创建 ~/nginx/conf/conf.d 目录:
1
2 1[root@docker ~]# mkdir ~/nginx/conf/conf.d
2
-
该目录下添加 zh-test-php.conf 文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 1[root@docker conf.d]# pwd
2/root/nginx/conf/conf.d
3[root@docker conf.d]# vim zh-test-php.conf
4server {
5 listen 80;
6 server_name localhost;
7
8 location / {
9 root /usr/share/nginx/html;
10 index index.html index.htm index.php;
11 }
12
13 error_page 500 502 503 504 /50x.html;
14 location = /50x.html {
15 root /usr/share/nginx/html;
16 }
17
18 location ~ \.php$ {
19 fastcgi_pass php:9000;
20 fastcgi_index index.php;
21 fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
22 include fastcgi_params;
23 }
24}
25
配置文件说明:
- php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
- /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录。
-
启动 nginx:
1
2
3
4
5
6
7 1[root@docker ~]# docker run --name zh-php-nginx -p 8083:80 -d \
2> -v ~/nginx/www:/usr/share/nginx/html:ro \
3> -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
4> --link myphp-fpm:php \
5> nginx
662e614358ae5d943457730a20c3b78197dde6b47f3b7511a6590625dcff34367
7
- -p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
- ~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
- ~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
- –link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
-
在 ~/nginx/www 目录下创建 index.php
1
2
3
4
5
6
7
8 1[root@docker www]# pwd
2[root@docker www]# vim index.php
3/root/nginx/www
4<?php
5echo phpinfo();
6?>
7
8