共计 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:
- 插件管理 → 安装 NodeJS Plugin
- Global Tool Configuration → 添加 NodeJS
- 构建任务中勾选“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 错误。
正文完