Networking
製作 docker 容器來監聽來自另一個 docker 容器的請求
我在同一個 Docker 網路中有 3 個 docker 容器(FrontEnd、Database 和 ApachePhp)。ApachePhp 將是一個 Web 伺服器(Apache + PHP),我需要使其僅通過 FrontEnd 可見,即只有對 ApachePhp 的請求才應通過 FrontEnd 接受。我有以下 apache 配置文件:
<VirtualHost *:80> ServerAdmin me@mydomain.com 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
和獲得所需結果的正確方法嗎?
你不需要在你的 apache 配置中解決這個問題。只要您不發布埠,docker 就不會配置轉發規則或代理來將外部流量發送到您的容器。無需在 docker 中公開埠(僅用於文件)。在 docker 容器之間進行通信所需的唯一步驟是:
- 在所有介面上偵聽您的應用程序內部(我相信您已經使用
*:80
.- 將容器連接到公共 docker 網路。當您使用單個 docker-compose.yml 進行部署時,這會自動發生。
- 從客戶端,使用 docker 的內置 DNS 作為主機名並連接到容器埠。Docker 的 DNS 會解析容器名稱,使用 compose 文件也可以解析服務名稱。因此,如果您的容器/服務名稱是 phpbackend,您將從前端連接到
phpbackend:80
.