Docker nginx容器中的多个网站 - PHP容器只能使用一个

时间:2018-03-02 14:17:38

标签: php docker nginx

我有3个Docker容器(nginx,php和mysql)通过docker-compose捆绑在一起。

/etc/nginx/sites-enabled我有两个网站的.conf文件。

magento2.loc  > magento2.conf
pma.loc       > pma.conf

在主机(Ubuntu)上,我相应地修改了/etc/hosts

127.0.0.1  > magent2.loc
127.0.0.1  > pma.loc

搬运工-compose.yml

version: '2'

services:
    nginx:
        (...)
        links:
            - php
        (...)
    php:
       (...)

运行docker-compose up后,服务器登录控制台显示:

  • 来自php和nginx对magento2.loc的响应<正确
  • 但只有来自pma.loc的nginx(没有php)的响应<

如何让pma.loc与PHP一起使用?我需要多个PHP容器吗?

1 个答案:

答案 0 :(得分:2)

实现您想要实现的目标的最简单方法是首先将数据库放在自己的容器中。然后,为每个网站创建一个容器,其中包含运行网站所需的组件,如下所示:

Websites w/ Shared Database

您将在每个网站容器和数据库容器之间建立链接。当然,您必须为每个网站创建虚拟主机,以便它们不会发生端口冲突。

对于您使用另一个Docker容器充当代理的问题,有一个稍微复杂的解决方案,该代理将流量适当地引导到每个网站。另一个解决方案,就是你现在要做的,是在同一容器中运行多个网站,你必须在容器中为每个网站建立server blocks(Nginx的虚拟主机术语)。

在任何情况下,您都应将数据库放在自己的容器中,并在Docker运行命令或Docker-Compose设置中链接到该容器。