Docker Compose是一個用於管理Web應用程式和數據庫等組件的容器化部署應用工具,它使用YAML文件來定義應用程式的各個組件,包括容器、image、環境變數和網絡設定等。Docker Compose能夠自動建立並管理容器之間的網絡配置,使容器組件間能夠互聯無需手動配置。
例如開發一個Web應用程式時,可能需要Webapp應用程式和database數據庫服務,這些組件可以透過Docker Compose進行容器化部署管理。以下是使用Docker Compose進行設定的基本步驟:
sudo apt update
sudo apt upgrade –y
sudo apt install curl
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose –version
以下使用 Docker Compose 建立容器執行 WordPress 和 MySQL 數據庫的簡單範例說明:
mkdir my-wordpress-project
cd my-wordpress-project
touch docker-compose.yml
mkdir wordpress mysql_data
version: '3'
services:
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80" # 將主機的端口8080對應到容器的端口80
restart: always
environment:
WORDPRESS_DB_HOST: db # WordPress資料庫主機名,與下面的服務名稱一致
WORDPRESS_DB_USER: wordpress # WordPress資料庫使用者名稱
WORDPRESS_DB_PASSWORD: wordpress # WordPress資料庫密碼
WORDPRESS_DB_NAME: wordpress # WordPress資料庫名稱
volumes:
- ./wordpress:/var/www/html # 持久化儲存WordPress網站檔案的目錄
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root_password # MySQL的root使用者密碼
MYSQL_DATABASE: wordpress # 新建的WordPress資料庫名稱
MYSQL_USER: wordpress # 新的MySQL使用者名稱
MYSQL_PASSWORD: wordpress # 新的MySQL使用者密碼
volumes:
- ./mysql_data:/var/lib/mysql # 持久化儲存MySQL資料庫資料的目錄
備註:
wordpress:depends_on:- db: WordPress需要一個數據庫服務,設定depends_on:名為db的數據庫容器,意思是在啟動WordPress容器之前,Docker Compose將確保db容器已經啟動運行。
./wordpress:/var/www/html :將本地文件系統中的./wordpress 目錄,掛載到容器内部的指定路徑:/var/www/html
切換到docker-compose.yml 文件的目錄,使用以下命令啟動應用程式:
sudo docker-compose up –d
-d 選項表示在背景運行容器。
sudo docker-compose ps
驗証測試
在瀏覽器中連線到 http://localhost:8080/ ,按照畫面上的指引來完成 WordPress 的設定
檢查資料庫內容,使用以下命令進入 MySQL 容器並檢查資料庫內容:
sudo docker exec -it db mysql -u root -p -h localhost
mysql> use wordpress;
mysql> show tables;
mysql> use wordpress;:這個命令將切換到wordpress 的資料庫。
mysql> show tables;:這個命令顯示 wordpress 資料庫中的所有表格的列表。包括 WordPress 存儲其數據的各種表格,如文章、評論、用戶等,是 WordPress 的核心表格。
顯示如下:
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+