用于托管PHP网站的Docker架构

Rev*_*ell 5 php architecture proxy nginx docker

我一直在研究Docker以及如何在服务器上托管多个网站"Docker方式".据我所知,理想情况下,一切都应该运行自己的容器,不应该共享这些容器.

我的问题是下面的概述是否是一个有效的容器设置,请求进入单个反向代理,该请求将请求转发给底层的Web服务器以处理实际请求.

此外,在下面的三种情况中,我详细介绍了为应用程序包含源文件的不同方法,并想知道三者中哪一种最常用/最好用.

我的愿望是能够在Docker中的单个服务器上运行不同的网站.这些网站可以有不同的要求,如图中不同的PHP-FPM版本所示.网站本身的部署对我来说有点不清楚,因为我不确定是否应该使用nginx/PHP-FPM包含源文件或单独部署它.

Docker架构概述

我目前的设置如下:

泊坞窗,compose.yml

version: '2'
services:
    nginx:
        image: nginx:alpine
        restart: always
        ports:
            - '80:80'
        links:
            - example_com
            - example_org
            - example_net
        volumes:
            - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro

    example_com:
        image: php:7.0-fpm-alpine
        restart: always
        volumes:
            - ./sites/example_com:/var/www/example_com:ro

    example_org:
        image: php:7.0-fpm-alpine
        restart: always
        volumes:
            - ./sites/example_org:/var/www/example_org:ro

    example_net:
        image: php:7.0-fpm-alpine
        restart: always
        volumes:
            - ./sites/example_net:/var/www/example_net
Run Code Online (Sandbox Code Playgroud)

nginx的/ conf.d/default.conf

server {
    listen       80;
    server_name  www.example.com example.com;

    location ~ \.php$ {
        fastcgi_pass   example_com:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example_com$fastcgi_script_name;
        include        fastcgi_params;
    }
}

server {
    listen       80;
    server_name  www.example.org example.org;

    location ~ \.php$ {
        fastcgi_pass   example_org:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example_org$fastcgi_script_name;
        include        fastcgi_params;
    }
}

server {
    listen       80;
    server_name  www.example.net example.net;

    location ~ \.php$ {
        fastcgi_pass   example_net:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example_net$fastcgi_script_name;
        include        fastcgi_params;
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是上面概述所说明的,但概述中的情况对我来说似乎是理想的情况.

如何使用反向代理和不同的PHP-FPM容器进行设置,以及如何部署我的网站及其后续更新?

对此的任何意见将不胜感激!

Nad*_*tif 1

我认为连接主 nginx 服务器的三个 nginx 服务器是没有必要的。php-fpm 进程监听套接字,因此您可以直接从主 nginx 服务器连接到每个 php-fpm 进程