Jenkins + Docker 全流程实战(前后端构建 & 常见问题)

25次阅读
没有评论

共计 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 错误。
正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2025-08-11发表,共计1961字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: