当前位置: 首页 > news >正文

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.dtcms.com/a/329907.html

相关文章:

  • 三方相机问题分析六:【没用相机,诡异的手电筒不可使用】下拉状态栏,手电筒置灰,无法打开,提提示相机正在使用
  • RAG-Fusion 实战:检索召回率提升新方案
  • 数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(下篇)
  • 智能制造数字孪生最佳交付实践:打造数据融合×场景适配×持续迭代的数字孪生框架
  • 计算机二级 Web —— HTML 全面精讲(含真题实战)
  • 2020/12 JLPT听力原文 问题一 5番
  • Unity3d UGUI图片按钮只有非透明区域(透明阈值)可以点击功能实现(含源码)
  • OSG —— Windows11下Vs2017完美编译Osg3.6.5+osgQt(附:Osg+osgQt测试用例)
  • GLSL学习
  • IPO辅导四年半,马上消费何时“马到成功”?
  • 深度解析:DCF估值模型实战指南 ——以Kappa Pi Therapeutics为例的完整估值建模过程
  • 万字长文全解析:五种主流归一化方法深入讲解(BN/LN/IN/GN/WN)
  • html img标签设置默认图片,防止图片路径不存在导致图片不展示影响页面美观
  • 微服务单元测试组件
  • 二分|回溯
  • 了解 Linux 中的 /usr 目录以及 bin、sbin 和 lib 的演变
  • C++算法·递推递归
  • 基于.Net Framework4.5 Web API 引用Swagger
  • HCIP——OSPF综合实验
  • 药房智能盘库系统:基于CV与时间序列预测的库存革命
  • 蓝蜂网关在雄安新区物联网建设中的关键应用
  • Vue内置组件全解析:从入门到面试通关
  • 用 OPC UA C# WinForm 的单节点订阅方法
  • 【个人项目】跑者天地—测试用例
  • AI搜索的极限优化、新兴技术、硬件加速、特定行业解决方案
  • [QtADS]解析demo.pro
  • 利用 Makefile 高效启动 VIVADO 软件:深入解析与实践
  • 十,算法-动态规划
  • 深入理解 Cookie 与 Session —— Web 状态保持详解与实战
  • 目标检测公开数据集全解析:从经典到前沿