Networking

製作 docker 容器來監聽來自另一個 docker 容器的請求

  • October 30, 2018

我在同一個 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 容器之間進行通信所需的唯一步驟是:

  1. 在所有介面上偵聽您的應用程序內部(我相信您已經使用*:80.
  2. 將容器連接到公共 docker 網路。當您使用單個 docker-compose.yml 進行部署時,這會自動發生。
  3. 從客戶端,使用 docker 的內置 DNS 作為主機名並連接到容器埠。Docker 的 DNS 會解析容器名稱,使用 compose 文件也可以解析服務名稱。因此,如果您的容器/服務名稱是 phpbackend,您將從前端連接到phpbackend:80.

引用自:https://serverfault.com/questions/937721