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