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

我用Amazon Q写了一个Docker客户端,并上架了懒猫微服商店

自从接触了Amazon Q,我陆陆续续写了不少小软件,其中这个项目是一个典型的例子,自己平时来使用,也分享给一些 NAS 爱好者来用。

image-20250606190108571

故事还要用上次折腾黑群晖说起,本意想把 NAS 和打印机共享二合一的,所以把闲着的软路由改装了黑群晖。顺便使用 Docker 跑一些服务,有好老本行的 ES 集群,也有自己写的一些服务。

不过慢慢的服务多了,时间长了就会忘记服务的端口,甚至还要登录群晖Web 端进行查看,群晖的Container Manager 很好用,就是登录的密码策略比较复杂,每次登录都比较麻烦,所以后来使用了一个 HomePage 来保存这些服务。但是每次调试 Docker 都非常麻烦。与Portainer相比,我需要的只是一个简洁的面板来查看容器的URI、状态,并进行启停操作,因此我决定自己开发一个。

image-20250606164850382

这个是群晖的 Container Manager,后面还有很多容器。记住这么多端口然后随时维护绝对不是一个容易的事。
image-20250606164632836

容器面板叫做Containly, 我写的最早的时候用的是用 GPT 写的。但是随着项目越来越大,GPT 每次都会丢一些东西,而且没办法操作本地目录,后来才转向了 Amazon Q,这个版本还是用 Q CLI来做的。

于是写好之后我把这个 APP 上架了懒猫微服的商店,这个是一款国产化的 NAS,可玩性非常高。

c970b2f8c3fea3a9246510fd1e20d9aa

Containly的核心功能是通过目录映射的Docker引擎读取所有容器信息,包括容器的启动、退出、停止及其他状态。例如,当容器处于“Create”状态时,它会被标记为“Other”状态,便于管理。

image-20250520104141112

默认情况下,每个容器卡片会显示容器的网桥信息、端口映射和URL。默认使用HTTP协议,鼠标悬停时,会在右侧显示操作按钮。通过点击这些按钮,操作会被保留,再次点击会隐藏,这样子就整个比较美观。

按钮功能包括:

  • 停止/启动
  • 重启
  • 查看日志
  • SSH进入容器
  • 切换HTTP/HTTPS
  • 黑名单管理

image-20250606190151980

此外,Containly还提供了一个输入框,用户可以输入需要监控的NAS域名,面板会自动根据域名和端口拼接成URI,并存储在localStorage中。更进一步,Containly还支持暗黑模式,提升了用户体验。

image-20250606185740253

另外如果多节点部署服务的话,还可以把从节点放入黑名单,这样子就只显示主节点的信息,面板就比较清爽。如果需要从节点的信息再从黑名单移除。

image-20250606190231618

能够直接从面板进去 ssh 页面,不用执行再 docker exec
image-20250606192901984

看日志也很方便,也无需再使用 docker logs,这样调试容器的时候就很方便了。
image-20250606192939172

我已经打包好了Docker镜像并配置了GitHub Actions,便于自动化部署。你可以通过以下方式部署Containly:

Docker部署命令
docker run -d \--name containly \-p 5000:5000 \  # 映射容器端口到主机-v /var/run/docker.sock:/var/run/docker.sock \  # 挂载Docker socket,允许访问宿主机Dockercloudsmithy/containly:latest  # 使用最新版本的Containly镜像
Compose配置
version: "3.8"
services:containly:image: cloudsmithy/containly:latestports:- "5000:5000"volumes:- /var/run/docker.sock:/var/run/docker.sockrestart: unless-stopped

这个是使用 Q 修改的部分代码:

2a4ea3b79c3998ba0742e79cee8f1672

后来,机缘巧合之下用了 Q pro,看来也不能优化再多。

image-20250606184151764

除了使用Q CLI,我们还可以通过安装VSCode和JetBrains插件来使用Q,安装插件后,免费版本可以使用Builder ID登录,Pro版本则支持使用IAM Identity Center登录。

image-20250606190814362

在VSCode中,你可以通过Q聊天面板与Q进行交互,并且支持中文聊天。

image-20250606191035548

与GPT相比,Q的优势在于它可以直接操作本地文件,用户可以直接在文件夹中生成工程文件,极大提升了开发效率。

image-20250606191616025


文章转载自:

http://sgXTeEvQ.tjsxx.cn
http://eKsahf3Q.tjsxx.cn
http://4RvcQteE.tjsxx.cn
http://Ysp5ZwMN.tjsxx.cn
http://Vbkent0v.tjsxx.cn
http://dsVSYNII.tjsxx.cn
http://oiAQW7Lp.tjsxx.cn
http://jjFzq7vH.tjsxx.cn
http://H18OhQCf.tjsxx.cn
http://IvkLzrkq.tjsxx.cn
http://3gnvkMhS.tjsxx.cn
http://627IHy3Z.tjsxx.cn
http://3Qkatt65.tjsxx.cn
http://tC7qJoDE.tjsxx.cn
http://m2HRqtLN.tjsxx.cn
http://H44QKQRP.tjsxx.cn
http://SPmgb2z9.tjsxx.cn
http://NvK08tOW.tjsxx.cn
http://0kg5BeRP.tjsxx.cn
http://lzSecUVj.tjsxx.cn
http://wcRJr97s.tjsxx.cn
http://WFjFXdzf.tjsxx.cn
http://1MmD0WRm.tjsxx.cn
http://adNtG8yT.tjsxx.cn
http://eWMIMwlA.tjsxx.cn
http://ssTFdrT2.tjsxx.cn
http://aOCMFG9o.tjsxx.cn
http://y7BV3DSx.tjsxx.cn
http://YiWOPu2l.tjsxx.cn
http://cGQdfMwW.tjsxx.cn
http://www.dtcms.com/a/235974.html

相关文章:

  • 动态IP与静态IP:数字世界的“变脸术”与“身份证”
  • 深入理解 Linux Kernel Panic:常见原因与实战分析
  • 网络库libhv介绍
  • systemback复制系统报错
  • 【Unity Shader编程】之让画面动起来
  • JVM虚拟机:内存结构、垃圾回收、性能优化
  • 深入理解Java单例模式:确保类只有一个实例
  • Java-IO流之打印流详解
  • MySQL基础(四)DML、数据表操作DDL操作
  • MAX3490
  • 关于双网卡优先级:有效跃点数的解析(设置值×2)
  • Levenberg-Marquardt算法详解和C++代码示例
  • 代驾数据库
  • Java逻辑运算符常见错误分析与规避指南
  • 使用 Python 和 HuggingFace Transformers 进行对象检测
  • 位运算(Bitwise Operations)深度解析
  • 基于J2EE架构的在线考试系统设计与实现【源码+文档】
  • 机器学习算法时间复杂度解析:为什么它如此重要?
  • C/C++ 中附加包含目录、附加库目录与附加依赖项详解
  • 波士顿房价预测(线性回归模型)
  • c++重点知识总结
  • VMware 安装 CentOS8详细教程 (附步骤截图)附连接公网、虚拟机yum源等系统配置
  • SQLAlchemy 中的 func 函数使用指南
  • CVAT标注服务
  • Python训练营---Day46
  • 使用pwm控制舵机来回摆动的中心位置
  • 深入解析JVM工作原理:从字节码到机器指令的全过程
  • Unity | AmplifyShaderEditor插件基础(第五集:简易移动shader)
  • 大模型编程助手-windsurf
  • QT自定义资源管理器