docker代碼如何在vscod上修改

基于?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??:依賴emqxmysql服務??健康??后啟動(通過depends_on條件控制)

三、開發調試指南

1. 后端服務(Backend)
? 運行與調試
  • ??本地開發??(非Docker環境,需配置.env):

    # Windows(使用start-system.bat)
    ./start-system.bat# Linux/macOS(需修改腳本權限)
    chmod +x start-system.bat
    ./start-system.bat

  • ??Docker內調試??:

    1. 進入容器:

      docker exec -it backend_container_name bash

    2. 使用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路由(如/api/users
2. 修改docker-compose.ymlbackendports暴露端口
3. 重啟服務

??修改邏輯??

1. 直接編輯代碼文件
2. 使用IDE斷點調試
3. 保存后重啟容器

??刪除功能??

1. 移除對應代碼文件
2. 更新依賴引用
3. 重新構建鏡像

2. ??后端代碼增改刪??

操作類型

步驟

??新增模塊??

1. 在backend/app中創建目錄/文件
2. 更新package.json依賴
3. 運行npm install

??修改業務邏輯??

1. 編輯.js/.ts文件
2. 使用console.log或調試工具追蹤變量
3. 重新構建鏡像:
bash<br> docker-compose build backend<br> docker-compose up -d backend<br>

??刪除冗余代碼??

1. 確認無依賴后刪除文件
2. 執行垃圾回收(Docker層面):
bash<br> docker system prune -a<br>

3. ??數據庫增改刪??

操作類型

步驟

??新增表/字段??

1. 編寫ORM遷移腳本
2. 執行遷移命令(如npx sequelize-cli db:migrate

??修改數據??

1. 通過SQL語句或ORM模型操作
2. 使用事務保證一致性:
sql<br> START TRANSACTION;<br> UPDATE users SET name='new' WHERE id=1;<br> COMMIT;<br>

??刪除數據??

1. 先備份重要數據
2. 執行軟刪除(標記刪除)或物理刪除
3. 優化表空間:
sql<br> OPTIMIZE TABLE users;<br>

五、流程圖示意(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

六、注意事項

  1. ??環境變量管理??:通過.env文件配置敏感信息(如數據庫密碼),避免硬編碼。

  2. ??健康檢查機制??:backend服務依賴emqxmysql的健康狀態,修改依賴服務后需等待健康檢查通過。

  3. ??數據備份??:定期備份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容器化部署實現環境一致性和快速迭代。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93214.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML5 CSS3 從入門到精通:構建現代Web的藝術與科學

本文將帶你系統地學習掌握現代Web前端的基礎與核心&#xff0c;最終能夠獨立構建語義清晰、布局靈活、交互豐富的專業級網站。 第一章&#xff1a;夯實基礎 - HTML5語義化與結構藝術 1.1 告別<div>混沌&#xff1a;語義化標簽的力量 <header><h1>網站標題…

C# 微軟依賴注入 (Microsoft.Extensions.DependencyInjection) 詳解

文章目錄 前言 核心原理 三大生命周期 核心接口與類 基礎使用示例 關鍵特性詳解 1、構造函數注入 2、作用域管理 3、服務解析方法 4、延遲加載 常見問題解決 問題1:循環依賴 問題2:多實現選擇 性能優化技巧 擴展方法示例 前言 微軟的依賴注入框架是 .NET Core/5+ 的核心組件…

【車聯網kafka】Kafka核心架構與實戰經驗(第四篇)

一、社團扛把子不為人知的秘密 香港社團里&#xff0c;Kafka 是整個組織的名號&#xff0c;ZooKeeper 就是說一不二的長老團&#xff0c;各個片區的 “話事人” 就是 broker&#xff0c;而能統領所有片區的 “扛把子”&#xff0c;就是 Kafka 里的控制器。? 1.1 選舉的秘密 每…

Scala重點(基礎、面向對象、高階函數、集合、模式匹配)

1. 基礎語法1.1. 注釋和java一樣我是單行注釋 /* 我是多行注釋 我是多行注釋 */ /** * 我是文檔注釋 * 我是文檔注釋 */1.2. 語句語句可以不以分號結尾一條語句獨占一行 println("Hello World!")多條語句在一行 println("Hello World!"); println("He…

明遠智睿T113-i核心板:工業設備制造領域的革新利器

在工業設備制造這片充滿挑戰與機遇的領域&#xff0c;技術革新如同一股洶涌浪潮&#xff0c;不斷重塑著市場競爭的格局。隨著技術持續進步&#xff0c;市場競爭愈發激烈&#xff0c;制造商們面臨著如何在保證產品卓越性能的同時&#xff0c;有效控制成本這一關鍵難題。在此背景…

122-基于Flask的校園霸凌數據可視化分析系統

校園霸凌數據可視化分析系統 - 基于Flask的全棧數據分析平臺 本文詳細介紹了一個基于Flask框架開發的校園霸凌數據可視化分析系統&#xff0c;從技術架構到功能實現&#xff0c;為數據分析項目開發提供參考。 &#x1f4cb; 目錄 項目概述技術架構核心功能代碼結構技術棧詳解核…

Docker 網絡設置方式詳解

Docker 網絡是容器通信的核心基礎&#xff0c;它允許容器之間、容器與主機之間以及容器與外部網絡之間進行數據交互。Docker 提供了多種網絡驅動類型&#xff0c;適用于不同場景&#xff0c;下面詳細介紹 Docker 網絡的設置方式。一、Docker 網絡的基本概念 Docker 網絡通過驅動…

export default和export function的作用及export的含義

在 JavaScript 中&#xff0c;export 是一個關鍵字&#xff0c;用于將模塊中的變量、函數、類等導出&#xff0c;以便其他模塊可以導入和使用。export default 和 export&#xff08;非默認導出&#xff09;是兩種不同的導出方式&#xff0c;它們在使用場景和語義上有明顯的區別…

免費 ollama 可用地址共享 內含免費 deepseek,gpt,bge,llama,Qwen,embed 大模型等

ollama 共享 介紹 集ollama地址的批量添加&#xff0c;批量校驗&#xff0c;批量獲取 &#xff0c;api接口調用于一體 演示地址&#xff1a;ollama格式化工具 開源地址&#xff1a;https://gitee.com/web/ollama-share 使用說明 index.php 通過提交table 批量提交ollama地…

Android Audio實戰——獲取活躍音頻類型(十五)

在 Android Audio 開發中,很多場景需要獲取當前正在播放的音頻類型,而在音頻管理器 AudioManager 中并沒有發現類似的接口,這一篇文章就來看一下實現獲取活躍音頻類型的方式。 一、音頻類型獲取 對于獲取當前活躍音頻流類型,在《硬按鍵調節音量》中是通過 getActiveStream…

Verilog功能模塊--SPI主機和從機(02)--SPI主機設計思路與代碼解析

前言 上一篇文章介紹了SPI的四種工作模式及其時序特性&#xff0c;相信各位同學已經掌握了SPI通信的核心原理。 本文用純Verilog設計了功能完整的4線SPI主機&#xff0c;并詳細說明了模塊編碼思路和使用注意事項&#xff0c;最后分享了源碼。 一、模塊功能 本Verilog功能模塊—…

Decoder模型 向量模長表示什么

Decoder模型 向量模長表示什么 詞和其他詞的關系的強弱和關聯程度;生僻詞模長小 從實驗結果來看,Qwen2-7B-Instruct的向量模長規律與之前的預期(“模長與語義豐富度、確定性正相關”)完全相反,這反映了Decoder-only模型(尤其是指令微調模型)的表征特性與Encoder-only模…

STL容器及其算法

C 標準庫容器詳解&#xff1a;特性、用法與場景選型容器是 C 標準庫&#xff08;STL&#xff09;的核心組件&#xff0c;用于存儲和管理數據。不同容器因底層實現不同&#xff0c;在性能、功能和適用場景上差異顯著。本文系統梳理vector、list、set、map等常用容器&#xff0c;…

MySQL ZIP安裝教程:從解壓到啟動

金金金上線&#xff01; 話不多&#xff0c;只講你能聽懂的前端知識 前言 我這里不能下載安裝程序的mysql&#xff0c;由于電腦安全限制&#xff0c;安裝時會彈出需要管理員賬號密碼權限&#xff0c;此路行不通&#xff0c;所以琢磨著免安裝版本怎么個流程&#xff0c;好&#…

p2p打洞

p2p網絡穿透庫,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp: https://libp2p.io/ P2P-udp的穿透教程: https://edu.51cto.com/lesson/731596.html 目前打洞機制最好的庫是webrtc,其次是libnice,它是輕量級的專門打洞的庫。 libni…

『“無恙心寬”,梗痛不常』——愛上古中醫(12)(健康生活是coder抒寫優質代碼的前提條件——《黃帝內經》伴讀學習紀要)

養心護心氣血通&#xff0c;無痛無梗全身松。 筆記模板由python腳本于2025-08-10 15:54:46創建&#xff0c;本篇筆記適合至少通曉一門語言&#xff0c;熟悉基本編程范式的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值&#xff1a;在于輸出思考與經驗&#xff0c;而不僅僅…

Spark 運行流程核心組件(一)作業提交

1、Job啟動流程1、Client觸發 SparkContext 初始化 2、SparkContext 向 Master 注冊應用 3、Master 調度 Worker 啟動 Executor 4、Worker 進程啟動 Executor 5、DAGScheduler 將作業分解為 Stage&#xff1a; 6、TaskScheduler 分配 Task 到 Executor 2、核心組件組件職責Spar…

MySQL 臨時表與復制表

一、MySQL 臨時表臨時表是會話級別的臨時數據載體&#xff0c;其設計初衷是為了滿足短期數據處理需求&#xff0c;以下從技術細節展開說明。&#xff08;一&#xff09;核心特性拓展1.生命周期與會話綁定會話結束的判定&#xff1a;包括正常斷開連接&#xff08;exit/quit&…

從配置到調試:WinCC與S7-1200/200SMT無線Modbus TCP通訊方案

測試設備與參數l 西門子PLC型號&#xff1a;S7-1200 1臺l 西門子PLC型號&#xff1a;S7-200Smart 1臺l 上位機&#xff1a;WinCC7.4 1臺l 無線通訊終端——DTD418MB 3塊l 主從關系&#xff1a;1主2從l 通訊接口&#xff1a;RJ45接口l 供電&#xff1a;12-24VDCl 通訊協議&a…

Android沉浸式全屏顯示與隱藏導航欄的實現

1. 總體流程以下是實現沉浸式全屏顯示和隱藏導航欄的流程&#xff1a;步驟描述步驟1創建一個新的Android項目步驟2在布局文件中定義需要展示的界面步驟3在Activity中設置沉浸式全屏顯示步驟4處理系統UI的顯示與隱藏步驟5運行應用并測試效果2. 詳細步驟步驟1&#xff1a;創建一個…