在一个dockerfile中将PHP-fpm与nginx结合在一起

我需要在一个dockerfile中将php-fpm和nginx结合起来用于生产部署。

那么更好的是:

(1)使用php:7.1.8-fpm启动dockerfile,然后在其上安装nginx图像层?

(2)或者你推荐使用nginx图像,然后使用apt-get安装php-fpm?

PS:我没有用于生产部署的docker-compose构build选项。 在我的开发环境中,我已经使用docker-compose并且从两个图像轻松地构build了多容器应用程序。 我们的组织devops不支持基于docker-compose的prod环境部署。

你应该部署两个容器,一个用fpm ,另一个用nginx ,你应该链接它们。 尽pipe你可以使用supervisor来监控同一个容器中的多个进程,但是Docker理念是每个容器都有一个进程。

就像是:

 docker run --name php -v ./code:/code php:7-fpm docker run --name nginx -v ./code:/code -v site.conf:/etc/nginx/conf.d/site.conf --link php nginx:latest 

site.conf

 server { index index.php index.html; server_name php-docker.local; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /code; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } } 

(可耻的灵感来自http://geekyplatypus.com/dockerise-your-php-application-with-nginx-and-php7-fpm/