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容器化部署实现环境一致性和快速迭代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值