惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
Martin Fowler
Martin Fowler
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V
Visual Studio Blog
博客园_首页
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
雷峰网
雷峰网
D
Docker
博客园 - 司徒正美
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
U
Unit 42
J
Java Code Geeks
A
About on SuperTechFans
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security Affairs
I
Intezer
Cisco Talos Blog
Cisco Talos Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog RSS Feed
P
Privacy & Cybersecurity Law Blog
T
Tenable Blog
T
Threatpost
H
Hacker News: Front Page
G
Google Developers Blog
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
L
Lohrmann on Cybersecurity
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
A
Arctic Wolf
S
Secure Thoughts
GbyAI
GbyAI
NISL@THU
NISL@THU
S
Security @ Cisco Blogs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Webroot Blog
Webroot Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
Spread Privacy
Spread Privacy
Application and Cybersecurity Blog
Application and Cybersecurity Blog

裴先生笔记

[通胀十年]“消费驱动、自由化”转向“安全驱动、再工业化“ - 裴先生笔记 轻量级多节点系统监控方案实战:Node Exporter + Prometheus + Grafana & 替代方案 查看 MYSQL 库大小、表大小、索引大小 - 裴先生笔记 如何查询 Hive表 stored as 类型 [通胀十年]超级债务危机 - 裴先生笔记
Jenkins + Docker 全流程实战(前后端构建 & 常见问题)
2025-08-11 · via 裴先生笔记

共计 1961 个字符,预计需要花费 5 分钟才能阅读完成。

本文记录了我在 Jenkins CI/CD 中部署 Node、Java 项目,以及在 Docker 中运行 Kafka、EMQX 等服务的过程,包括踩坑和解决方案。
适合刚搭建 CI/CD 流水线、需要同时构建前后端的朋友参考。


1️⃣ Jenkins 部署与运行

1.1 使用 Docker 启动 Jenkins

bash复制编辑docker run -d --name jenkins -u root \
  -p 8090:8080 -p 50000:50000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/jenkins_home:/var/jenkins_home \
  my-jenkins:latest

✅ 挂载 /var/run/docker.sock 可以让 Jenkins 容器直接调用宿主机 Docker 引擎。


2️⃣ Jenkins 环境配置

2.1 Java & Maven

  • Manage Jenkins → Global Tool Configuration 中配置 JDK 和 Maven 路径。
  • 可挂载宿主机 .m2 缓存:
bash复制编辑-v /root/.m2:/var/jenkins_home/.m2

2.2 Node.js & npm & Yarn

在 Dockerfile 中安装:

dockerfile复制编辑RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g yarn

Jenkins 页面安装 NodeJS Plugin

  1. 插件管理 → 安装 NodeJS Plugin
  2. Global Tool Configuration → 添加 NodeJS
  3. 构建任务中勾选“Provide Node & npm bin/ folder to PATH”

3️⃣ 前端构建流程

3.1 Maven 集成前端构建(frontend-maven-plugin)

xml复制编辑<plugin>
  <groupId>com.github.eirslett</groupId>
  <artifactId>frontend-maven-plugin</artifactId>
  <version>1.12.0</version>
  <executions>
    <execution>
      <id>yarn install</id>
      <goals><goal>yarn</goal></goals>
    </execution>
    <execution>
      <id>build</id>
      <goals><goal>yarn</goal></goals>
      <configuration>
        <arguments>build</arguments>
      </configuration>
    </execution>
  </executions>
</plugin>

4️⃣ 常见问题 & 解决方案

❌ ENOENT 打包错误

perl复制编辑[Error: ENOENT: no such file or directory, lstat '/target/thingsboard-web-ui-linux']

原因:打包路径不存在。
解决:

bash复制编辑mkdir -p ./target/src
yarn build
pkg ...

❌ Docker build 超时

bash复制编辑i/o timeout

解决:

  • 换国内镜像源(阿里云、DaoCloud)。
  • 构建时加:
bash复制编辑docker build --network host ...

5️⃣ 常用服务容器部署

Kafka(Bitnami 版本)

bash复制编辑docker run -d --name kafka \
  -p 9092:9092 \
  -e KAFKA_CFG_PROCESS_ROLES=broker,controller \
  -e ALLOW_PLAINTEXT_LISTENER=yes \
  bitnami/kafka:latest

EMQX(MQTT Broker)

bash复制编辑docker run -d --name emqx \
  -p 18083:18083 -p 1883:1883 \
  emqx:latest

默认账号密码:admin / public


6️⃣ Docker 容器可视化管理工具推荐

  • Portainer(最推荐)
  • Rancher(大规模集群)
  • Docker Desktop(本地开发)

7️⃣ 流程图(Jenkins CI/CD 架构)

less复制编辑[ GitHub/GitLab ]
        ↓
[ Jenkins 容器 ]
  |  Node 构建前端
  |  Maven 构建后端
        ↓
[ Docker Build 镜像 ]
        ↓
[ 部署到服务器/云平台 ]

💡 总结

  • 统一环境(Node、Java、Gradle)放在 Dockerfile 中构建,保证可复用。
  • Jenkins 容器内挂载宿主机 Docker,可以直接打包镜像。
  • 前后端项目构建时,路径和依赖要提前准备好,避免 ENOENT 错误。