基于?docker-compose.yml
文件(包含 ??emqx??(MQTT服務)、??backend??(后端服務)、??mysql??(數據庫))的詳細運行、調試、增改刪操作說明,結合流程圖示意(使用PlantUML語法)。
一、開發環境準備
1. 安裝基礎工具
??Docker??:官網下載
??Docker Compose??:官網安裝
??代碼編輯器??:VS Code/WebStorm(推薦安裝Docker插件)
??數據庫可視化工具??:MySQL Workbench/Navicat/DBeaver(用于數據庫操作)
??后端調試工具??:Node.js調試插件(如VS Code的
JavaScript Debug Terminal
)
2. 代碼目錄結構
項目根目錄/
├── backend/ # 后端代碼
│ ├── app/ # 業務代碼
│ ├── start-system.bat # 啟動腳本(Windows)
│ └── Dockerfile # 后端Docker構建文件
├── docker-compose.yml # 服務編排文件
├── .env # 環境變量配置(示例)
└── README.md # 說明文檔
二、服務運行流程
1. 啟動服務(按依賴順序)
# 1. 拉取/構建鏡像(首次運行)
docker-compose up -d --build# 2. 查看服務狀態
docker-compose ps# 3. 驗證健康檢查(backend依賴emqx和mysql健康)
docker-compose logs backend | grep "服務依賴狀態"
2. 服務依賴邏輯
??emqx??:獨立運行,提供MQTT通信(無健康依賴)
??mysql??:需初始化數據庫(通過環境變量
MYSQL_DATABASE
創建庫)??backend??:依賴
emqx
和mysql
服務??健康??后啟動(通過depends_on
條件控制)
三、開發調試指南
1. 后端服務(Backend)
? 運行與調試
??本地開發??(非Docker環境,需配置
.env
):# Windows(使用start-system.bat) ./start-system.bat# Linux/macOS(需修改腳本權限) chmod +x start-system.bat ./start-system.bat
??Docker內調試??:
進入容器:
docker exec -it backend_container_name bash
使用IDE遠程調試(VS Code配置
launch.json
):{"type": "node","request": "attach","name": "Attach to Backend","address": "localhost","port": 9229,"localRoot": "${workspaceFolder}/backend","remoteRoot": "/app" }
? 代碼修改
??熱更新??:修改代碼后重啟容器(需配置Dockerfile的
VOLUME
掛載):docker-compose restart backend
??依賴安裝??:在
backend/Dockerfile
中添加npm install
步驟。
2. 數據庫服務(MySQL)
? 連接與操作
??命令行連接??:
mysql -h localhost -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD}
??數據操作示例??:
-- 創建表 CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255));-- 增刪改查 INSERT INTO users VALUES (1, 'test'); DELETE FROM users WHERE id=1; UPDATE users SET name='new' WHERE id=1; SELECT * FROM users;
? 數據庫遷移
使用工具如
Sequelize
/Knex
編寫遷移腳本(推薦在backend
中集成ORM):// 示例:Sequelize遷移文件 module.exports = {up: async (queryInterface, Sequelize) => {await queryInterface.createTable('users', { /* 表結構 */ });},down: async (queryInterface, Sequelize) => {await queryInterface.dropTable('users');} };
3. MQTT服務(EMQX)
? 功能驗證
??連接測試??:使用MQTT客戶端工具(如MQTTX)連接
emqx:1883
,驗證發布/訂閱功能。??日志查看??:
docker-compose logs emqx | grep "連接狀態"
四、增改刪操作分類說明
1. ??前端代碼增改刪??(假設前端代碼在backend/app
中)
操作類型 | 步驟 |
---|---|
??新增接口?? | 1. 編寫API路由(如 |
??修改邏輯?? | 1. 直接編輯代碼文件 |
??刪除功能?? | 1. 移除對應代碼文件 |
2. ??后端代碼增改刪??
操作類型 | 步驟 |
---|---|
??新增模塊?? | 1. 在 |
??修改業務邏輯?? | 1. 編輯 |
??刪除冗余代碼?? | 1. 確認無依賴后刪除文件 |
3. ??數據庫增改刪??
操作類型 | 步驟 |
---|---|
??新增表/字段?? | 1. 編寫ORM遷移腳本 |
??修改數據?? | 1. 通過SQL語句或ORM模型操作 |
??刪除數據?? | 1. 先備份重要數據 |
五、流程圖示意(PlantUML)
@startuml
' 環境準備階段
actor User
participant "Docker/Docker Compose" as DC
participant "IDE" as IDE
participant "MySQL Workbench" as MySQLTool' 運行服務流程
User -> DC: 執行 `docker-compose up -d --build`
DC --> IDE: 查看服務日志
DC --> MySQLTool: 連接數據庫初始化' 開發調試流程
alt 后端調試User -> IDE: 編輯 backend 代碼IDE --> DC: 重啟 backend 容器DC --> IDE: 查看健康檢查狀態(emqx/mysql 是否健康)
else 數據庫調試User -> MySQLTool: 執行 SQL 腳本MySQLTool --> DC: 驗證數據變更
end' 增改刪操作流程
User -> IDE: 前端代碼修改
IDE --> DC: 重新構建前端資源(若有)
User -> IDE: 后端代碼修改
IDE --> DC: 重啟 backend 服務
User -> MySQLTool: 數據庫表/數據操作
MySQLTool --> DC: 驗證接口響應' 部署更新流程
User -> DC: 執行 `docker-compose down`
User -> DC: 打包新鏡像
User -> DC: 執行 `docker-compose up -d`
DC --> User: 驗證全鏈路功能@enduml
六、注意事項
??環境變量管理??:通過
.env
文件配置敏感信息(如數據庫密碼),避免硬編碼。??健康檢查機制??:
backend
服務依賴emqx
和mysql
的健康狀態,修改依賴服務后需等待健康檢查通過。??數據備份??:定期備份
mysql
數據(可通過Docker卷掛載到宿主機):docker run --rm -v mysqldata:/var/lib/mysql -v $(pwd)/backup:/backup ubuntu tar -cvf /backup/mysql_backup.tar /var/lib/mysql
通過以上步驟,可系統化地管理前后端及數據庫的開發、調試和數據操作,結合Docker容器化部署實現環境一致性和快速迭代。