配置环境目录和拉取镜像

  1. mkdir -p /docker/nginx/html
  2. mkdir -p /docker/nginx/conf.d
  3. docker pull nginx
  4. docker pull php:7.1.0-fpm

nginx配置文件

  1. vim /docker/nginx/conf.d/default.conf
  2. server {
  3. listen 80 default_server;
  4. server_name _;
  5. root /usr/share/nginx/html;
  6. location / {
  7. index index.html index.htm index.php;
  8. autoindex off;
  9. }
  10. location ~ \.php(.*)$ {
  11. root /var/www/html/;
  12. fastcgi_pass 172.17.0.2:9000;
  13. fastcgi_index index.php;
  14. fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
  15. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  16. fastcgi_param PATH_INFO $fastcgi_path_info;
  17. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  18. include fastcgi_params;
  19. }
  20. }

运行php

  1. docker run -p 9000:9000 --name myphp \
  2. -v /docker/nginx/html:/var/www/html/ \
  3. --privileged=true \
  4. -d php:7.1.0-fpm

查询容器IP地址:docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp

运行nginx

  1. docker run -p 80:80 --name mynginx \
  2. -v /docker/nginx/html:/usr/share/nginx/html \
  3. -v /docker/nginx/conf.d:/etc/nginx/conf.d \
  4. --privileged=true \
  5. -d nginx

生成测试文件

  1. echo "<?php phpinfo();" > /docker/www/info.php

nginx同IP多站点配置样例

  1. vim /docker/nginx/conf.d/www.test.com.conf
  2. server {
  3. listen 80;
  4. server_name www.test.com;
  5. root /usr/share/nginx/html/www.test.com/;
  6. location / {
  7. index index.html index.htm index.php;
  8. autoindex off;
  9. }
  10. location ~ \.php(.*)$ {
  11. root /var/www/html/www.test.com/;
  12. fastcgi_pass 172.17.0.2:9000;
  13. fastcgi_index index.php;
  14. fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
  15. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  16. fastcgi_param PATH_INFO $fastcgi_path_info;
  17. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  18. include fastcgi_params;
  19. }
  20. }