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

推荐订阅源

F
Fortinet All Blogs
Attack and Defense Labs
Attack and Defense Labs
V2EX - 技术
V2EX - 技术
O
OpenAI News
S
Secure Thoughts
H
Heimdal Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Schneier on Security
Schneier on Security
H
Hacker News: Front Page
S
Security Affairs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
The Register - Security
The Register - Security
GbyAI
GbyAI
Cloudbric
Cloudbric
MongoDB | Blog
MongoDB | Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
Kaspersky official blog
Forbes - Security
Forbes - Security
Y
Y Combinator Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
Hacker News - Newest:
Hacker News - Newest: "LLM"
The Cloudflare Blog
Recorded Future
Recorded Future
人人都是产品经理
人人都是产品经理
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Webroot Blog
Webroot Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
T
Tor Project blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
V
V2EX
T
Tailwind CSS Blog
SecWiki News
SecWiki News
NISL@THU
NISL@THU
C
Check Point 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 错误。