Jenkins pipeline + docker构建和管理服务

Jenkins pipeline + docker构建和管理服务

1. 部署Jenkins服务

Jenkins 是一款开源的 持续集成 / 持续交付(CI/CD) 自动化服务器,用 Java 编写,MIT 许可证,可独立运行在 Windows、macOS、Linux 甚至 Docker/K8s 上。它的核心作用是:把“写代码 → 构建 → 测试 → 打包 → 部署”这一系列重复劳动自动化,让团队更快、更可靠地交付软件

本文采用docker-compose的方式部署Jenkins,按照如下步骤进行:

1.1 拉取LTS(长期支持版)版Jenkins Docker镜像

docker pull jenkins:lts

1.2 创建持久化存储目录(非常重要)

mkdir -p /home/data/jenkins

1.3 挂载宿主机的docker和docker-compose(可选)

为了能够在Jenkins流水线中使用dockerdocker compose构建服务,需要在Jenkins容器中挂载宿主机的dockerdocker.sock以及docker compose

目前测试情况,Jenkins支持docker-compose v2.24及以上版本,可从github或以下链接获取:

国内直链 github地址

修改docker-compose权限:

chmod +x /home/docker-file/docker-compose-v2.24.0/docker-compose-linux-x86_64

1.4 docker-compose.yml文件,以下是一个示例

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    privileged: true
    container_name: jenkins-server
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - /home/data/jenkins:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker:ro
      - /home/docker-file/docker-compose-v2.24.0/docker-compose-linux-x86_64:/usr/local/bin/docker-compose
    restart: always

1.5 启动Jenkins服务

docker-compose up -d

1.6 使用浏览器访问

http://115.190.149.0:8080

1.7 获取初始化密码并完成初始化流程

初始密码在以下文件中:

/home/data/jenkins/secrets/initialAdminPassword

1.8 初始化完成后进入登录页面

Jenkins登录页面

1.9 输入设置的账号密码登录后能看到以下页面说明部署成功

Jnekins-main

2. 使用Jenkins + docker compose 启动Python http服务案例

本章将用一个案例说明如何使用Jenkins pipeline(流水线)任务构建服务

2.1 项目目录结构如下

目录结构

2.2 各文件样例

2.2.1 app.py
from fastapi import FastAPI, Query, Request
from fastapi.middleware.cors import CORSMiddleware
import uvicorn

app = FastAPI()
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_methods=["*"],
    allow_headers=["*"]
)

@app.get("/test/")
async def read_items(name: str):
    return f"Hello {name}, this is a test page ! ! ! ! ! !"

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=5000)
2.2.2 Dockfile
FROM python:3.9
COPY docker/libs /libs
RUN pip install -r /libs/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
WORKDIR /jk_test
COPY app.py .
CMD ["python", "app.py"]
2.2.3 docker-compose.yml
version: "3.3"

services:
  jk-test-worker:
    build:
      context: ..
      dockerfile: docker/Dockerfile
    container_name: jk-test-service-1
    ports:
      - "5002:5000"
    environment:
      PYTHONPATH: /code

networks:
  default:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: "172.24.0.0/24"
2.2.4 requirements.lib
fastapi==0.101.1
uvicorn==0.23.1

2.3 在gitee创建仓库

2.4 本地创建git仓库并关联远程的gitee仓库

2.4.1 初始化git仓库
cd jenkins_test
git init
2.4.2 关联远程gitee仓库
git remote add origin https://gitee.com/DerrickChiu/jk_test.git
2.4.3 提交修改并推送到gitee仓库
git add .   # 添加修改的内容
git commit -m "第一次提交" # 提交修改
git push origin master  # 推送到gitee仓库

2.5 构建Jenkins Pipeline任务

2.5.1 创建任务

2.5.2 构建任务

绿色对号说明任务构建成功

2.5.3 查看日志

2.5.4 测试服务

服务启动成功!!!

发表回复