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

问题描述 投票:1回答:1

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

/etc/nginx/sites-enabled我有2个网站的.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容器吗?

php docker nginx
1个回答
2
投票

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

Websites w/ Shared Database

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.