让 Docker 容器监听来自另一个 Docker 容器的请求

让 Docker 容器监听来自另一个 Docker 容器的请求

我在同一个 Docker 网络中有 3 个 Docker 容器(前端、数据库和 ApachePhp)。ApachePhp 将是一个 Web 服务器(Apache + PHP),我需要让它仅通过前端可见,即仅应通过前端接受对 ApachePhp 的请求。我有以下 apache 配置文件:

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/site

  <Directory /var/www/site/>
      <RequireAll>
          Require ip FrontEnd
      </RequireAll>
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

这是正确的使用方法Require并能获得预期的结果吗?

答案1

您不需要在 apache 配置中解决这个问题。只要您不发布端口,docker 就不会配置转发规则或代理来将外部流量发送到您的容器。在 docker 中也不需要公开端口(这只是为了文档说明)。docker 容器之间通信所需的唯一步骤是:

  1. 在应用程序的所有界面上监听(我相信您已经用 完成了这一步*:80)。
  2. 将容器连接到通用 docker 网络。当您使用单个 docker-compose.yml 进行部署时,此操作会自动发生。
  3. 从客户端,使用 docker 内置的 DNS 作为主机名并连接到容器端口。Docker 的 DNS 将解析容器名称,使用 compose 文件还可以解析服务名称。因此,如果您的容器/服务名称是 phpbackend,您将从前端连接到phpbackend:80

相关内容