企业服务器部署UI自动化:centos7+docker+jenkins

Ryder 2025-10-31 24 10/31

一、环境准备:安装 Docker 和 Jenkins

# 安装Docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker并设置开机自启
systemctl start docker
systemctl enable docker

# 验证
docker --version  # 输出Docker版本

发现报错,于是换源:

rm -f /etc/yum.repos.d/docker-ce.repo # 删除之前添加的官方源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all # 清除缓存
yum makecache fast # 生成新缓存
yum install -y docker-ce docker-ce-cli containerd.io # 重新安装Docker

Dockerfile内容

# 基础镜像:官方 Jenkins(带 JDK17)
FROM jenkins/jenkins:lts-jdk17

USER root

# 设置环境变量
ENV PYTHON_VERSION=3.9.23

# 安装依赖工具和 Python 3.9.23
RUN apt update && apt install -y wget build-essential zlib1g-dev \
    libncurses5-dev libgdbm-dev libnss3-dev libssl-dev \
    libreadline-dev libffi-dev curl libsqlite3-dev && \
    cd /usr/src && \
    wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \
    tar xzf Python-${PYTHON_VERSION}.tgz && \
    cd Python-${PYTHON_VERSION} && \
    ./configure --enable-optimizations && \
    make altinstall && \
    ln -sf /usr/local/bin/python3.9 /usr/bin/python && \
    ln -sf /usr/local/bin/pip3.9 /usr/bin/pip && \
    pip install -U pip && \
    pip install pytest playwright && \
    playwright install && \
    playwright install-deps && \
    apt clean && rm -rf /var/lib/apt/lists/* /usr/src/Python-${PYTHON_VERSION}*

# 暴露 Jenkins 端口
EXPOSE 8080 50000

# 默认用户和工作目录
USER jenkin

docker-compose.yml

services:
  jenkins:
    build: .   # 👈 从当前目录构建(会用 Dockerfile)
    container_name: jenkins
    user: root
    restart: always
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - /demo/playwright_ui_test/jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker

docker-compose build
docker-compose up -d

出现Compose 报错 “requires buildx 0.17 or later”

写个脚本更新

#!/bin/bash
set -e
echo "🔧 正在下载最新 Docker Buildx 插件..."
# 确保依赖齐全
yum install -y curl jq ca-certificates
# 创建插件目录
mkdir -p ~/.docker/cli-plugins
# 获取最新版本号
LATEST=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | jq -r .tag_name)

# 生成下载链接
BUILDX_URL="https://github.com/docker/buildx/releases/download/${LATEST}/buildx-${LATEST}.linux-amd64"
echo "📦 最新版本: ${LATEST}"
echo "🌐 正在下载: ${BUILDX_URL}"
# 下载 buildx 二进制文件(强制 TLS1.2)
curl -L --tlsv1.2 -o ~/.docker/cli-plugins/docker-buildx "$BUILDX_URL"
# 授权执行
chmod +x ~/.docker/cli-plugins/docker-buildx
# 验证安装
echo "✅ Buildx 版本信息如下:"
docker buildx version


最后加权限
chmod +x /demo/playwright_ui_test/update_buildx.sh
加个镜像源

尝试构建 cd /demo/playwright_ui_test docker compose build docker compose up -d 第一次构建时间挺长的,等待即可 企业服务器部署UI自动化:centos7+docker+jenkins 在阿里云放行端口,服务器防火墙看一下;在本地电脑访问http:公网ip:8080,即可看到配置jenkins,第一次密码为终端出现的字符串密码

二、FRP内网穿透

内网穿透是一种通过公共网络连接两个私有网络的技术,使得外部用户可以访问内部网络中的服务。FRP(Fast Reverse Proxy)是一种流行的内网穿透工具

1.github下载

wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz

tar -zxvf frp_0.51.3_linux_amd64.tar.gz

mv frp_0.51.3_linux_amd64.tar.gz frp

2.配置frps.toml文件

bindPort = 7000

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

auth.method="token"
auth.token = "thisisatoken"

3.利用systemd启动后台进程挂载

vim /etc/systemd/system/frps.service

[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type=simple
ExecStart = /dev-ops/frp/frps -c /dev-ops/frp/frps.toml

ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=5

[Install]
WantedBy = multi-user.target

启动

systemctl start frps
systemctl status frps

企业服务器部署UI自动化:centos7+docker+jenkins

注:阿里云服务器控制面板安全组开放端口

4.客户端 frpc.toml文件

#你的云服务器公网ip
serverAddr = "x.x.x.x"
#连接到云服务器端口,需要和frps.toml配置文件中端口一致
serverPort = 7000

auth.method = "token"
auth.token = "thisisatoken"

#开放端口连接
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 6100

#共享文件访问
[[proxies]]
name = "d_drive"
type = "tcp"
remotePort = 6001 # 服务器上用于访问的端口
[proxies.plugin]
type = "static_file"
localPath = "D:\\" # 要对外暴露的目录
stripPrefix = "d_drive" # 访问路径名,此处即http://x.x.x.x:6001/d_drive/
httpUser = "username" # 用户名
httpPassword = "password" # 密码

 

cmd 命令启动

frpc.exe -c frpc.toml

利用公网IP+端口

企业服务器部署UI自动化:centos7+docker+jenkins

- THE END -

Ryder

12月09日16:40

最后修改:2025年12月9日
0

共有 0 条评论