TestHub测试平台正式开源,文末获取完整源码

最近这段时间,一个名为TestHub的开源测试平台在测试圈子悄然崛起,之前只是在本地运行了下看了下页面效果,页面还是非常漂亮的。今天抽时间研究了一下在服务器上去部署这个项目,当然,大部分都是借助AI去帮我完成的。因为平台技术栈用到了Django + Vue3 ,数据库用的是mysql,因此,需要了解一下怎么去部署这种架构的项目,这里的话采用docker搭建是比较方便的。

主要的思路如下:

1、docker搭建mysql8版本的数据库

2、后端代码用docker镜像启动

3、前端采用node打包构建后,将部署包部署到ngnix镜像中下面是一些dockerfile,可以供参考:

Dockerfile.backend

FROM python:3.12-slim# 设置环境变量ENV PYTHONDONTWRITEBYTECODE=1ENV PYTHONUNBUFFERED=1# 设置工作目录WORKDIR /app# 安装系统依赖RUN apt-get update \    && apt-get install -y --no-install-recommends \        default-libmysqlclient-dev \        build-essential \        pkg-config \        gcc \    && rm -rf /var/lib/apt/lists/*# 复制requirements文件COPY requirements.txt .# 安装Python依赖RUN pip install --no-cache-dir -r requirements.txt# 复制项目代码COPY . .# 收集静态文件RUN python manage.py collectstatic --noinput# 暴露端口EXPOSE 8000# 启动命令CMD ["sh", "-c", "python manage.py migrate --no-input && python manage.py runserver 0.0.0.0:8000"]

Dockerfile.frontend

# 多阶段构建 - 前端构建阶段FROM node:18-alpine AS builder# 设置工作目录WORKDIR /app# 复制前端文件COPY frontend/ .# 安装依赖RUN npm install# 构建前端应用RUN npm run build# 使用Nginx作为生产环境FROM nginx:alpine# 复制Nginx配置COPY nginx.conf /etc/nginx/nginx.conf# 复制构建好的前端文件COPY --from=builder /app/dist /usr/share/nginx/html# 暴露端口EXPOSE 80# 启动NginxCMD ["nginx", "-g", "daemon off;"]

nginx.conf

events {    worker_connections 1024;}http {    include       /etc/nginx/mime.types;    default_type  application/octet-stream;    # 日志格式    log_format main '$remote_addr - $remote_user [$time_local] "$request" '                    '$status $body_bytes_sent "$http_referer" '                    '"$http_user_agent" "$http_x_forwarded_for"';    access_log /var/log/nginx/access.log main;    error_log /var/log/nginx/error.log warn;    # 基本设置    sendfile on;    tcp_nopush on;    tcp_nodelay on;    keepalive_timeout 65;    types_hash_max_size 2048;    # Gzip设置    gzip on;    gzip_vary on;    gzip_proxied any;    gzip_comp_level 6;    gzip_types        text/plain        text/css        text/xml        text/javascript        application/json        application/javascript        application/xml+rss;    server {        listen 80;        server_name localhost;        # 前端静态文件        location / {            root /usr/share/nginx/html;            try_files $uri $uri/ /index.html;            expires 1h;            add_header Cache-Control "public, must-revalidate, proxy-revalidate";        }        # API请求代理到后端        location /api/ {            proxy_pass http://testhub-backend:8000;            proxy_http_version 1.1;            proxy_set_header Upgrade $http_upgrade;            proxy_set_header Connection 'upgrade';            proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Proto $scheme;            proxy_cache_bypass $http_upgrade;        }        # 媒体文件代理到后端        location /media/ {            proxy_pass http://testhub-backend:8000;            proxy_http_version 1.1;            proxy_set_header Upgrade $http_upgrade;            proxy_set_header Connection 'upgrade';            proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Proto $scheme;            proxy_cache_bypass $http_upgrade;        }        # 静态文件代理到后端        location /static/ {            proxy_pass http://testhub-backend:8000;            proxy_http_version 1.1;            proxy_set_header Upgrade $http_upgrade;            proxy_set_header Connection 'upgrade';            proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Proto $scheme;            proxy_cache_bypass $http_upgrade;        }    }}

run.sh

#!/bin/bashset -eBASE_DIR="/testhub"cd "$BASE_DIR"# 创建网络docker network create testhub-net 2>/dev/null || echo "Network already exists"# 1. 构建后端镜像echo "Building backend image..."docker build -f Dockerfile.backend -t testhub-backend:latest .# 2. 构建前端镜像echo "Building frontend image..."docker build -f Dockerfile.frontend -t testhub-frontend:latest .# 3. 停止并删除旧容器docker stop testhub-backend testhub-nginx 2>/dev/null || truedocker rm testhub-backend testhub-nginx 2>/dev/null || true# 4. 启动后端echo "Starting backend container..."docker run -d --name testhub-backend \  --restart=always \  -p 8000:8000 \  --network testhub-net \  -v "$BASE_DIR/.env:/app/.env:ro" \  -v "$BASE_DIR/media:/app/media" \  -v "$BASE_DIR/logs:/app/logs" \  -v "$BASE_DIR/static:/app/static" \  testhub-backend:latest# 5. 启动前端(nginx)echo "Starting frontend container..."docker run -d \  --name testhub-nginx \  --restart=always \  --network testhub-net \  -p 80:80 \  -v /testhub/nginx.conf:/etc/nginx/conf.d/default.conf:ro \  -v /testhub/media:/app/media:ro \  -v /testhub/static:/app/static:ro \  testhub-frontend:latestecho "TestHub is running -> http://localhost"

反正上面这些脚本都是AI生成的,自己试了一下是可以用的,如果有看不懂的,大家可以自己再问ai,有问题的话还可以找ai反馈一下。

还没有拿到源码的小伙伴,以及还没有进交流群的,都可以添加下面的微信喔:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐