互联网技术 / 互联网资讯 · 2024年3月16日

云计算核心技术:本地开发中的 Docker Compose 与调试模式

本节介绍如何通过一个 Docker Compose 文件,在本地开发环境中同时启动 Node 应用与 MongoDB,并将调试模式打开以便连接调试器。

打开 IDE 或文本编辑器,创建一个名为 docker-compose.dev.yml 的文件,用于定义本地开发所需的服务、端口映射、环境变量和卷映射。下面给出一个简化且可工作的示例要点,帮助你在实际项目中快速落地。

示例要点:Compose 文件结构

在 Compose 文件中,通常包含以下关键配置:

  • 版本信息,如 version: “3.8”
  • 服务定义,例如 notes 服务和 MongoDB 服务
  • 端口映射,例如将本地 8000 与容器内端口 8000 绑定,及调试端口 9229 对外暴露
  • 环境变量设置,例如 SERVER_PORT、连接字符串等
  • 卷映射,用以实现代码到容器的本地映射和数据持久化

示例要点概要(以文本形式展示,供参考)如下:
– notes 服务:
– build: 上下文指向当前目录
– ports: 8000:8000, 9229:9229
– environment: SERVER_PORT=8000, connectionSTRING=mongodb://mongo:27017/notes
– volumes: ./:/app
– command: npm run debug
– Mongo 服务:
– image: mongo:4.2.8
– ports: 27017:27017
– volumes: mongodb:/data/db, mongodb_config:/data/configdb
– volumes(命名卷): mongodb, mongodb_config

通过上述配置,我们能够减少手动输入参数的工作量,使用声明式的方式配置启动参数。

调试模式与服务发现

为便于调试,我们将端口 9229 暴露,以便附加调试器。与此同时,将本地源代码映射到运行中的容器中,确保在编辑器中修改代码后,容器内也能获取到变更并重新启动。

另外一个有用的功能是将服务名称用于连接字符串的解析。通过在 Compose 文件中为 MongoDB 服务命名,我们可以直接在连接字符串中使用服务名,从而实现更直观的通信配置。

在调试模式下启动应用

为了在调试模式下启动应用,需要在项目的 package.json 中添加一个脚本,指示 Node 以调试模式启动。

编辑 package.json 的脚本部分,添加如下行: “debug”: “nodemon –inspect=0.0.0.0:9229 server.js”

如上所示,我们使用 nodemon 来在调试模式下运行服务器,监控变更并在需要时自动重启。随后在项目根目录执行以下命令来安装 nodemon:

$ npm install nodemon

接着启动应用并验证运行状态:

$ docker-compose -f docker-compose.dev.yml up –build

通过 –build 标志,Docker 将在启动前构建镜像。若一切顺利,你将看到应用成功启动的输出。

云计算核心技术Docker教程:使用 Compose 在本地开发

测试 API 端点

启动完成后,可以通过以下 curl 命令测试 API:

curl –request GET –url http://localhost:8000/notes

预期得到的示例响应如下所示:

{“code”:”SUCCESS”,”meta”:{“total”:0,”count”:0},”payload”:[]}