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

推荐订阅源

W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
F
Full Disclosure
博客园 - 【当耐特】
C
CERT Recently Published Vulnerability Notes
Engineering at Meta
Engineering at Meta
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Threatpost
I
Intezer
V2EX - 技术
V2EX - 技术
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Hacker News
The Hacker News
小众软件
小众软件
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
N
News | PayPal Newsroom
MyScale Blog
MyScale Blog
AI
AI
Vercel News
Vercel News
Spread Privacy
Spread Privacy
美团技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
V
Vulnerabilities – Threatpost
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
U
Unit 42
L
LangChain Blog
Recent Announcements
Recent Announcements

裴先生笔记

[通胀十年]“消费驱动、自由化”转向“安全驱动、再工业化“ - 裴先生笔记 轻量级多节点系统监控方案实战: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 错误。