
- Docker 教程
- Docker - 首頁
- Docker - 概述
- Docker - Linux 安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 登錄檔
- Docker - Compose
- Docker - 使用容器
- Docker - 架構
- Docker - 層
- Docker - 容器和主機
- Docker - 配置
- Docker - 容器和 Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 管理埠
- Docker - Web 伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全
- Docker - 工具箱
- Docker - 雲
- Docker - 構建雲
- Docker - 日誌記錄
- Docker - 持續整合
- Docker - Kubernetes 架構
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 服務設定
- Docker - Node.js 設定
- Docker - MongoDB 設定
- Docker - NGINX 設定
- Docker - ASP.Net 設定
- Docker - MySQL 設定
- Docker - Go 設定
- Docker - Rust 設定
- Docker - Apache 設定
- Docker - MariaDB 設定
- Docker - Jupyter 設定
- Docker - Portainer 設定
- Docker - Rstudio 設定
- Docker - Plex 設定
- Docker 設定 - Flame
- Docker 設定 - PostgreSQL
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - Python 設定
- Docker - Java 設定
- Docker - Redis 設定
- Docker - Alpine 設定
- Docker - BusyBox 設定
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker - Apache 設定
Apache,也稱為 Apache HTTP 伺服器,是全球最常用的 Web 伺服器之一。它是開源的、非常強大的,並且可以根據使用者的需求進行調整,這就是為什麼它被數百萬個網站使用的原因。但是,在不同的環境中設定和管理 Apache 可能是一個挑戰,尤其是在依賴項和系統配置方面。
Docker 透過提供一個標準化的環境來容器化 Apache,從而解決了這個問題,該環境可以輕鬆地在各種平臺上部署、管理和擴充套件!本章將引導您完成 Apache HTTP 容器化的過程,以便您可以在一個更隔離的環境中執行它。
Apache HTTP 伺服器容器化的前提條件
在開始本教程之前,請確保您擁有以下內容:
- Docker 基礎知識 - 如果你已經瞭解映象、容器和 Dockerfile,那麼理解本章會更容易。
- Apache HTTP 伺服器基礎知識 - 您至少應該瞭解一些關於 Apache 配置和如何管理簡單伺服器的資訊。
- 已安裝 Docker - 您的 Docker 是否正在執行?您可以從 Docker 官方網站 下載它。
- 文字編輯器 - 任何文字編輯器,如 VSCode、Sublime Text,甚至 Notepad++ 都可以使用。
- 命令列介面 (CLI) - 您應該能夠在命令列介面中輸入命令。
設定 Apache 專案
在您可以將 Apache HTTPD 容器化之前,您需要在本地機器上執行一個簡單的 Apache 專案。此專案將用作伺服器 Docker 映象的基礎。
步驟 1. 建立專案目錄
首先建立一個資料夾,用於儲存與您的 Apache 專案相關的所有檔案。這些檔案可能包括配置設定以及 Web 內容。
$ mkdir apache-docker $ cd apache-docker

步驟 2. 新增基本的 HTML 檔案
在專案目錄中,建立一個 Apache 可以使用的HTML 檔案,如下所示。有了此檔案,一旦啟動伺服器,我們就可以檢查伺服器是否正常執行。
$ touch index.html
在您的文字編輯器中開啟index.html檔案並新增一些基本的 HTML 內容:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to Apache</title> </head> <body> <h1>Hello, World! Welcome to your Apache server.</h1> </body> </html>
新增內容後儲存檔案。
步驟 3. 新增 Apache 配置檔案
為了 Apache 對內容進行自定義服務,您可以包含一個配置檔案。在您的專案資料夾中建立一個名為“conf”的目錄,您將在其中儲存此配置。
$ mkdir conf
在 conf 目錄中,建立一個名為httpd.conf的新檔案:
$ touch conf/httpd.conf

此httpd.conf檔案將用於配置 Apache 伺服器。現在,您可以新增以下基本配置:
ServerName localhost <VirtualHost *:80> DocumentRoot "/usr/local/apache2/htdocs" <Directory "/usr/local/apache2/htdocs"> AllowOverride None Require all granted </Directory> </VirtualHost>
此配置在埠 80 上設定虛擬主機,指定將提供 HTML 檔案的文件根目錄。
步驟 4. 目錄結構概述
您的專案目錄應如下所示:
apache-docker/ ├── conf/ │ └── httpd.conf └── index.html
這就是您為 Apache 專案設定基礎結構的方式。稍後,我們將使用它來建立一個 Dockerfile,構建一個 Docker 映象,然後在一個容器化環境中執行 Apache 伺服器。
在本地執行 Apache 伺服器
在將本地 Apache HTTPD 伺服器容器化之前,我們希望執行它,以便確保一切設定正確。我們只是想測試一下我們的 Apache 配置和專案檔案是否按預期工作,獨立於 Docker。
步驟 1. 安裝 Apache HTTP 伺服器
您可以在您的機器上安裝 Apache。根據作業系統,您可以使用以下命令之一。
在 Ubuntu / Debian 上
$ sudo apt-get update $ sudo apt-get install apache2
在 CentOS / RHEL 上
$ sudo yum install httpd
在 macOS 上(使用 Homebrew)
$ brew install httpd

步驟 2. 啟動 Apache 伺服器
安裝 Apache 後,您可以啟動伺服器,以便它可以提供專案目錄中的內容。
在 Ubuntu / Debian 上
$ sudo systemctl start apache2
在 CentOS/RHEL 上
$ sudo systemctl start httpd
在 macOS 上
$ sudo apachectl start
步驟 3. 配置文件根目錄
預設情況下,它會從預定義的文件根目錄提供檔案。現在,讓我們討論如何配置 Apache 以從我們的專案目錄 apache-docker 提供內容,以測試我們專案的設定。
使用文字編輯器開啟 Apache 配置檔案。預設配置通常是httpd.conf或apache2.conf。在 Ubuntu/Debian 上,它可以是/etc/apache2/apache2.conf,而在 CentOS/RHEL 上,它可能位於/etc/httpd/conf/httpd.conf。找到 DocumentRoot 指令,並將其更新為指向您的專案目錄。例如:
DocumentRoot "/path/to/apache-docker" <Directory "/path/to/apache-docker"> AllowOverride None Require all granted </Directory>
將/path/to/apache-docker替換為您的專案目錄的實際路徑。
步驟 4. 重啟 Apache
更新配置後,您需要重新啟動 Apache 以應用更改。
在 Ubuntu/Debian 上
$ sudo systemctl restart apache2
在 CentOS/RHEL 上
$ sudo systemctl restart httpd
在 macOS 上
$ sudo apachectl restart

步驟 5. 訪問 Apache 伺服器
您現在可以開啟您的 Web 瀏覽器並訪問https://。您應該會看到您之前建立的 HTML 頁面,其中顯示“Hello, World!”訊息。

建立 Dockerfile
現在我們已經運行了本地 Apache HTTPD 伺服器,讓我們嘗試將此伺服器 Docker 化,以便它可以在容器上執行。為此,我們需要構建一個包含應用程式及其依賴項的 Docker 映象。要構建 Docker 映象,我們需要一個包含所有相關指令的 Dockerfile。
Dockerfile只是一個文字檔案,其中包含Docker守護程式用於構建映象的一組指令。Dockerfile中的每個指令都會在映象中建立一個可重用的層。然後,我們可以使用Docker build命令使用此Dockerfile構建映象。
步驟 1. 建立 Dockerfile
在您的專案目錄中建立一個名為Dockerfile的新檔案。
$ touch Dockerfile
步驟 2. 定義基礎映象
Dockerfile中的第一條指令是定義基礎映象。由於我們的目標是在Docker容器上執行Apache HTTPD伺服器,因此我們可以使用Dockerhub提供的官方Apache映象,使用以下指令:
FROM httpd:latest
這將拉取官方 httpd 映象的最新版本,其中已經包含預配置的 Apache HTTP 伺服器。
步驟 3. 將專案檔案複製到容器中
現在,讓我們將所有專案檔案複製到 Docker 容器中。在 Docker 容器中,Apache Web 伺服器希望 HTML 檔案位於/usr/local/apache2/htdocs/目錄中。我們可以使用COPY指令將index.html檔案複製到此目錄。
COPY ./index.html /usr/local/apache2/htdocs/
步驟 4. 複製 Apache 配置檔案
接下來,您還可以複製包含自定義配置的httpd.conf檔案。Apache Web 伺服器希望配置檔案位於/usr/local/apache2/conf/目錄中。
COPY ./conf/httpd.conf /usr/local/apache2/conf/httpd.conf
步驟 5. 公開必要的埠
Apache Web 伺服器預設情況下監聽埠 80 以接收所有 HTTP 請求。我們可以在 Dockerfile 中編寫一條指令,以便從容器外部訪問此埠。
EXPOSE 80
請注意,此指令實際上並沒有將埠釋出到您的主機機器,但它允許公開埠。
步驟 6. 最終 Dockerfile
最終的 Dockerfile 如下所示:
# Use the official Apache HTTPD image as the base FROM httpd:latest # Copy the HTML files into the Apache document root COPY ./index.html /usr/local/apache2/htdocs/ # Copy the custom Apache configuration file COPY ./conf/httpd.conf /usr/local/apache2/conf/httpd.conf # Expose port 80 to allow external access EXPOSE 80
步驟 7. 目錄結構概述
現在您的專案目錄應如下所示:
apache-docker/ ├── conf/ │ └── httpd.conf ├── Dockerfile └── index.html
構建 Apache 映象
現在我們已經建立了 Dockerfile,我們可以繼續構建 Docker 映象。
步驟 1. 構建 Docker 映象
在終端中導航到您的專案目錄 (apache-docker) 並執行以下命令:
$ docker build -t my-apache-image .

在上面的命令中,docker build告訴 Docker 守護程式從 Dockerfile 建立一個映象。接下來,-t my-apache-image使用名稱my-apache-image標記映象。最後的. 指定構建上下文。
步驟 2. 驗證映象
您可以透過列出主機機器上的所有 Docker 映象來驗證映象構建。
$ docker images

執行 Apache Docker 容器
讓我們執行與該 Docker 映象關聯的 Docker 容器。Docker run 命令將建立一個具有隔離環境的容器,其中 Apache 伺服器將在獨立於本地機器配置的環境中執行。
步驟 1. 執行 Docker 容器
您可以使用以下命令啟動容器。
$ docker run -d -p 8080:80 --name my-apache-container my-apache-image

以下是命令的各個部分的作用:
- docker run從映象建立並啟動一個新容器。
- -d在分離模式下執行容器,這意味著它在後臺執行。
- -p 8080:80將容器內部的埠 80(Apache 正在監聽的埠)對映到主機機器上的埠 8080。如果埠 8080 已經在使用中,您可以選擇不同的主機埠。
- --name my-apache-container為正在執行的容器分配一個名稱,使其更容易管理。
- my-apache-image指定要用於容器的映象。
步驟 2. 訪問 Apache 伺服器
現在您的容器正在執行,您可以開啟網頁瀏覽器並導航到https://:8080,檢視您之前建立的“Hello, World!”頁面。
結論
您已成功將 Apache HTTP 伺服器容器化,建立了 Docker 映象,並在 Docker 容器內執行它。這種方法為跨不同環境的伺服器提供了可移植性、一致性和易於部署的優勢。您可以輕鬆擴充套件您的設定或與他人共享,也可以將其整合到更大的基於 Docker 的基礎架構中。
關於 Apache HTTP 伺服器容器化的常見問題 (FAQ)
關於 Apache HTTP 伺服器容器化,有一些非常常見的疑問 (FAQ),本節將簡要解答這些問題。
1. 如何在 Docker 中配置 Apache HTTPD 進行反向代理?
透過定義虛擬主機並使用 ProxyPass 指令將請求轉發到後端伺服器,從而在反向代理模式下配置 Apache HTTPD。正確對映後端應用程式的埠和網路配置。
2. 如何在 Docker 中的 Apache HTTPD 中處理 SSL/TLS 證書?
將 SSL/TLS 證書放置到掛載到容器中的卷中。設定 Apache HTTPD 以使用這些證書。在討論如何在 Docker 設定中處理證書以實現自動證書管理時,像 Let's Encrypt 這樣的工具是個不錯的選擇。
3. 使用 Docker 中的 Apache HTTPD 的最佳實踐是什麼?
使用精簡的 Apache HTTPD 映象,最佳化配置檔案,並利用 Docker 的網路功能。提供透過環境變數重新配置的能力。新增適當的錯誤處理和日誌記錄。確保 Apache HTTPD 及其依賴項保持最新。