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

比 IDEA 容器自动化部署更轻量便捷的工具

使用 Node CLI 实现 Docker 容器自动化部署

云服务部署是项目工程化开发的关键环节,也是让应用触达更多用户的重要途径。当前,云上运行项目的方式多种多样,其中容器化部署已成为主流的云原生应用交付方式,以 Docker + Kubernetes 为代表的技术栈,能够有效解决软件开发与部署过程中的环境一致性、资源利用率和可移植性等核心问题(Docker 官方文档)。

在企业级开发中,项目上线通常依赖 GitLab 等工具构建完整的 CI/CD(持续集成/持续交付)流程。然而,对于个人开发者或小型团队而言,搭建和维护一套完整的 CI/CD 系统不仅复杂,而且成本较高,难以快速落地。

那么,个人或小团队如何高效地实现项目部署?目前常见的做法是通过 IDE(如 IntelliJ IDEA)直接集成 Docker 进行部署。但这种方式通常依赖付费版 IDE,需要繁琐的本地配置,且要求开发环境安装 Docker CLI,对使用者的技术门槛和软硬件条件有一定要求。

本项目旨在降低部署门槛,通过一个基于 Node.js 的命令行工具(CLI),实现极简配置、最少依赖的自动化 Docker 部署流程,帮助开发者无需复杂环境即可快速将应用部署到云服务器。

在实现 Node CLI 自动化容器部署前,需要了解什么是 SSH(【科普】SSH都不懂,还搞什么网络)。简单的说ssh 是 Linux 系统的登录工具,现在广泛用于服务器登录和各种加密通信,是一种网络协议。

在了解什么是 SSH 之后,我们开始解读 IDEA 实现容器化部署的原理。

IDEA 实现容器化部署的原理

我们首先要知道IDEA配置的核心步骤,并理解每步配置的作用,才能进一步了解到容器化部署的原理。

IDEA 配置的核心步骤解读

  • IDEA 实现 docker 容器部署时,首先需要配置 SSH 信息(下图所示)。这个操作是为了后续 Docker 能够成功部署到对应的云服务,用于与云服务建立 SSH 连接

在这里插入图片描述

  • 配置完 SSH 信息后,需要配置 Docker 信息,这里选择 SSH,再选中刚才配置好的 SSH 信息,这里就会进行SSH连接的校验,连接未成功的时候会进行相应的提示。这部配置配置完成,则可以再 server 中看到云服务正在运行的docker镜像。

在这里插入图片描述

  • 后面再配置对应项目的运行脚本,相关配置说明
    • Dockerfile: 默认是Dockerfile,这个也是标准命名,用于定义如何构建 Docker 镜像的自动化脚本
    • Image tag: 对应 Docker 的镜像名,是镜像的唯一标识,用于区分不同版本和不同用途的镜像。格式通常为:[仓库地址/][用户名/项目名]:[标签]
    • Container name: 对应 Docker 的容器名,用于区分不同的容器实例,容器本质是镜像的动态运行实例,命名一般为项目名,一个镜像可以用于多个实例。
    • Bind ports: 端口映射,即云服务访问端口与容器实际开放端口之间的映射。打通容器内部网络与宿主机(或外部网络)的连接,让外部能够访问容器中运行的应用。格式为:<宿主机端口>:<容器内端口>
    • Before launch: 部署需要执行的脚本,一般是项目打包构建的脚本。

在这里插入图片描述

IDEA 执行 Docker部署的方式

IDEA 利用了 Docker 的 C/S 架构,IDEA为客户端,云服务中的docker为服务端。

IDEA 先通过 ssh 连接上远程服务器运行 Docker Daemon,再利用本地的 Docker CLI(即本地需要拥有docker.exe 文件,并配置好环境变量 )向服务端发送命令。

简单的理解就是,IDEA 负责发送命令,而 docker 构建的实际执行过程在云端。如同使用了命令:DOCKER_HOST=ssh://user@server docker build -t myapp

可构建的文件是再本地,云端如何实现构建呢?

这里文件传输是由 docker CLI 自动完成的,CLI 会自动把docker 构建的上下文打包成一个 tar 流上传,这里的上下文是指执行 Dockerfile(构建 Docker 镜像的自动化脚本)所在目录下的所有文件。

如果没有配置.dockerignore文件,CLI 默认会传递所有文件。这将会导致很多与构建无关的文件上传如node_modules,浪费带宽,导致构建时间变长。而这个往往是直接利用 IDEA 构建会忽略的

实现 Docker 容器自动化部署的核心思路步骤

  • 第一步:读取指定的 ssh 和 docker 配置文件
  • 第二步:根据配置文件,进行 SSH 连接性判断
  • 第三步:根据配置文件,打包指定的项目文件为tar流
  • 第四步:根据配置文件,通过 SSH 进行文件上传,文件上传至云服务的暂存文件夹下
  • 第五步:在云端进行文件解压
  • 第六步:构建容器
  • 第七步:清理旧容器
  • 第八步:启动容器
  • 第九步:清空无用文件

具体代码:https://github.com/yotomum-ml/auto-deploy-sh(欢迎大家提供issue)

对应的npm包:https://www.npmjs.com/package/auto-deploy-sh

http://www.dtcms.com/a/394427.html

相关文章:

  • 知识图谱技术对自然语言处理深层语义分析的影响与启示研究
  • Javase 高级技术 —— 01 反射
  • Linux 孤儿进程与进程的优先级和切换和调度
  • QML学习笔记(七)QML的基本数据类型
  • 基于51单片机电子钟闹钟12/24小时制LCD显示
  • 小程序开发全解析:从结构到API
  • 异步方法在C#中的使用
  • js时间戳转换日期格式 yyyy-mm-dd
  • 信号处理方法概述
  • 固定收益理论(五)债券投资归因模型
  • 【论文速递】2025年第18周(Apr-27-May-03)(Robotics/Embodied AI/LLM)
  • 3D视觉——求出目标物体在相机坐标系下的位姿信息
  • 固态和机械硬盘损坏后的不同
  • Linux 基础IO
  • pandawiki ai 无法生成摘要
  • m语言可视化log中的变量信息
  • MySQL:库操作和常用数据类型
  • uniapp实现view块级元素横竖屏切换
  • 【编号74】河北地理基础数据(道路、水系、四级行政边界、地级城市、DEM等)
  • Python: 将wxauto发布为接口,并部署为Windows服务
  • 2025年度SEO优化公司
  • 基于Markdown的静态网站生成器完全指南
  • hot100——第十一周
  • 嵌入式(2)——HAL_GetTick()
  • 《第18课——C语言结构体:从Java的“豪华别墅“到C的“集装箱宿舍“——内存对齐、位域抠门与指针破门的底层狂欢》
  • 旅游线路预约小程序怎么搭建?景区售票团购小程序怎么做?
  • Redis未来发展趋势:技术演进与生态展望
  • 怎么重新映射windows终端的按键的功能
  • 【秋招笔试】2025.09.20哔哩哔哩秋招笔试真题
  • string 容器