使用 Docker Compose 部署 MySQL
本文將詳細指導如何使用 docker-compose
部署 MySQL,包括基本配置、啟動步驟、數據持久化以及一些高級選項。通過容器化部署 MySQL,你可以快速搭建一個隔離的數據庫環境,適用于開發、測試或小型生產場景。
關鍵要點
- 使用
docker-compose
部署 MySQL 需要創建一個docker-compose.yml
文件,設置 MySQL 鏡像、端口映射、環境變量和數據持久化。 - 需要安裝 Docker Engine、Docker Compose 和 MySQL 客戶端。
- 數據通過命名卷持久化,方便管理和備份。
- 令人驚訝的是,你可以自動創建數據庫和用戶,只需在文件中添加額外的環境變量。
準備工作
在開始之前,請確保已安裝以下工具:
- Docker Engine:容器運行環境,可從 官方文檔 獲取。
- Docker Compose:管理多容器應用的工具,可從 官方文檔 獲取。
- MySQL 客戶端:用于連接和操作數據庫,可參考 安裝指南。
這些工具是部署的基礎,確保你的環境已準備就緒。
創建和啟動 MySQL
1. 創建 docker-compose.yml
文件
創建一個名為 docker-compose.yml
的文件,內容如下:
version: '3.9'
services:mysql:image: mysql:8.0restart: alwaysports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: MYPASSWORDvolumes:- mysql_data:/var/lib/mysql
volumes:mysql_data:
說明:
version: '3.9'
:指定 Docker Compose 文件格式版本。
image: mysql:8.0
:使用 MySQL 8.0 官方鏡像。
restart: always
:容器在失敗時自動重啟。
ports: "3306:3306"
:將主機端口 3306 映射到容器內的 3306 端口。
environment
:設置 MySQL 根密碼(將 MYPASSWORD 替換為你的實際密碼)。
volumes
:使用命名卷 mysql_data 掛載到 /var/lib/mysql,實現數據持久化。
2.可選:自動創建數據庫和用戶
如果需要自動創建數據庫和用戶,可以在 environment 中添加以下內容:
environment:- MYSQL_ROOT_PASSWORD=MYPASSWORD- MYSQL_DATABASE=mydb- MYSQL_USER=myuser- MYSQL_PASSWORD=myuserpassword
說明:
MYSQL_DATABASE
:創建名為 mydb 的數據庫。
MYSQL_USER
:創建用戶 myuser。
MYSQL_PASSWORD
:設置用戶密碼為 myuserpassword。
將上述值替換為你的實際需求,這一功能非常適合快速初始化。
3.啟動服務
在 docker-compose.yml 文件所在目錄,打開終端并運行:
docker compose up -d
-d
參數表示在后臺運行,容器啟動后不會阻塞終端。
首次運行可能需要下載 MySQL 鏡像,請耐心等待。
4. 驗證和連接
檢查容器狀態:
docker compose ps
輸出應顯示 mysql
服務狀態為 Up
,表示運行正常。
連接 MySQL,使用 MySQL 客戶端:
mysql -h localhost -u root -p
輸入之前設置的密碼(如 MYPASSWORD
),成功連接后即可看到 MySQL 提示符。
5. 停止和清理
使用完成后,運行以下命令停止并移除容器:
docker compose down
這會停止并刪除容器、網絡和卷,但數據仍保存在 mysql_data
卷中,除非手動清理。
注意事項
數據持久化
:mysql_data
卷確保數據在容器刪除后仍可訪問,建議定期備份。
安全性
:暴露 3306 端口可能存在風險,生產環境建議使用防火墻或 Docker 網絡隔離。
調試
:
查看日志:
docker logs mysql
進入容器
docker exec -it mysql bash
結論
通過 docker-compose 部署 MySQL 是一種高效、靈活的方式,適合快速搭建開發或測試環境。本文提供了從基礎配置到高級選項的完整指南,包括數據持久化、自動初始化和故障排查方法。你可以根據實際需求調整配置,例如更改端口、密碼或添加初始化腳本。