如何在一台主机上运行多个docker WordPress

如何在一台主机上运行多个docker WordPress,wordpress,docker,Wordpress,Docker,我是码头新手 我想在一台主机上部署多个wordpress容器。我想到了两种解决方案,但我不知道它们是否正确 解决方案1:使用wordpress图像 docker run --name wordpress-1 -dp 8001:80 -e some-database-env wordpress docker run --name wordpress-2 -dp 8002:80 -e some-database-env wordpress 我认为wordpress图像包含web服务器、php和f

我是码头新手

我想在一台主机上部署多个wordpress容器。我想到了两种解决方案,但我不知道它们是否正确

解决方案1:使用wordpress图像

docker run --name wordpress-1 -dp 8001:80 -e some-database-env wordpress
docker run --name wordpress-2 -dp 8002:80 -e some-database-env wordpress

我认为wordpress图像包含web服务器、php和fpm,因此我可以访问
http://localhost:8001
当它运行时。 当我需要使用端口80向Internet公开两个服务时,我需要一个前端服务(nginx)将请求转发到这两个服务,对吗

解决方案2:使用5.5.0-php7.3-fpm-alpine图像

此图像较小,它仅从fpm打开一个端口9000。似乎没有web服务器。我试图用它来配置nginx,但不起作用

docker run --name wordpress-1 -dp 9001:9000 -e some-database-env wordpress:5.5.0-php7.3-fpm-alpine
nginx配置

    server {
        listen 9993;
        server_name localhost;
        
        index index.php index.html;

        location / {
            try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            # I have try use container's ip, but network not work(ping not recieved)
            fastcgi_pass 127.0.0.1:9001;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
        }
    }
找不到浏览器显示文件

并获取nginx错误

2020/09/01 21:26:28 [error] 59036#0: *9 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://[::1]:9001", host: "localhost:9993"
解决方案1是在一台主机上部署多个wordpress容器的正确方法吗


如何使用5.5.0-php7.3-fpm-alpine映像在一台主机上部署多个wordpress容器?

它不会侦听该IP地址,因此请将IP地址从以下位置更改为:

fastcgi_pass 127.0.0.1:9001;
致:

IP地址
172.17.0.1
是docker集装箱网络的IP地址网关

或更改为:

fastcgi_pass ip_address_of_wordpress_container:9001;

只需继续使用第一个选项,将NGINX设置为负载平衡器,并进行如下配置:

http {
    upstream app {
        server wordpress-1:80;
        server wordpress-1:80;
    }
}
为了使它更简单,请使用docker compose


Ref-

我使用
docker Inspect wordpress
查找容器的ip并设置为nginx,现在我得到502坏网关错误。nginx日志错误是什么?您确定nginx配置工作正常吗?当这两个容器用于不同的域时,此解决方案将严重失败,例如,第一个容器设置为example1.com,而另一个容器设置为example2.com。然后,您需要让nginx反向代理根据主机进行转发。为什么希望平衡器服务于不同的域?要解决一个域内的负载平衡问题,请使用两台主机。要为多个域提供服务,请为每个域使用平衡主机的实例。
http {
    upstream app {
        server wordpress-1:80;
        server wordpress-1:80;
    }
}