fix:cicd

This commit is contained in:
Your Name 2026-06-22 14:58:27 +08:00
parent 9003d8718a
commit fc939ab672
5 changed files with 4391 additions and 11 deletions

View File

@ -46,16 +46,16 @@ jobs:
uses: https://gitee.com/zsqai/ssh-action@v1.0.3
with:
host: ${{ vars.HOST }}
username: ${{ vars.USERNAME }}
key: ${{ secrets.SSH_KEY }}
username: root
password: ${{ secrets.MAIN_HOST_PASSWORD }}
port: 22
script: |
# 登录阿里云镜像仓库
docker login --username=${{ vars.ALIYUN_USERNAME }} --password=${{ secrets.ALIYUN_PASSWORD }} ${{ vars.ALIYUN_REGISTRY }}
# 停止并删除旧容器
docker stop ai-personage-web 2>/dev/null || true
docker rm ai-personage-web 2>/dev/null || true
docker stop website-01 2>/dev/null || true
docker rm website-01 2>/dev/null || true
# 删除旧镜像(强制重新拉取)
docker rmi ${{ vars.ALIYUN_REGISTRY }}/${{ vars.ALIYUN_NAMESPACE }}/${{ vars.ALIYUN_REPO }}:latest 2>/dev/null || true
@ -65,9 +65,9 @@ jobs:
# 运行新容器
docker run -d \
--name ai-personage-web \
--name website-01 \
--restart always \
-p 8085:3003 \
-p 8085:3002 \
-e NODE_OPTIONS="--max-old-space-size=4096" \
-e NODE_ENV="production" \
${{ vars.ALIYUN_REGISTRY }}/${{ vars.ALIYUN_NAMESPACE }}/${{ vars.ALIYUN_REPO }}:latest
@ -77,12 +77,12 @@ jobs:
# 查看 BUILD_ID 确认更新
echo "=== Build ID ==="
docker exec -it ai-personage-web cat .next/BUILD_ID 2>/dev/null || echo "Cannot read BUILD_ID"
docker exec -it website-01 cat .next/BUILD_ID 2>/dev/null || echo "Cannot read BUILD_ID"
# 查看日志
echo ""
echo "=== Container Logs ==="
docker logs ai-personage-web --tail 20
docker logs website-01 --tail 20
# 清理无用镜像
docker image prune -f

44
Dockerfile Normal file
View File

@ -0,0 +1,44 @@
# 构建阶段
FROM crpi-jlsdxetsdmy4ckxh.cn-shenzhen.personal.cr.aliyuncs.com/zsq_proxy/node:20-alpine AS build
WORKDIR /app
# 添加构建参数
ARG BUILD_VERSION
ARG BUILD_TIME
ARG CACHE_BUST
ENV BUILD_VERSION=$BUILD_VERSION
ENV BUILD_TIME=$BUILD_TIME
# 强制打破 Docker 缓存
RUN echo "Cache bust: ${CACHE_BUST} - ${BUILD_VERSION} - ${BUILD_TIME}"
RUN yarn config set registry https://registry.npmmirror.com && \
yarn config set network-timeout 60000
COPY package*.json ./
RUN yarn install --frozen-lockfile
COPY . .
# 强制清理 .next
RUN rm -rf .next
# 构建
RUN yarn build
# 部署阶段
FROM crpi-jlsdxetsdmy4ckxh.cn-shenzhen.personal.cr.aliyuncs.com/zsq_proxy/node:20-alpine AS app
WORKDIR /app
ENV NODE_ENV=production
ENV NODE_OPTIONS="--max-old-space-size=4096"
COPY --from=build /app/.next ./.next
COPY --from=build /app/public ./public
COPY --from=build /app/package.json ./package.json
COPY --from=build /app/node_modules ./node_modules
EXPOSE 3002
CMD ["yarn", "start"]

113
docker/nginx.conf Executable file
View File

@ -0,0 +1,113 @@
# Generated by nginxconfig.io
# See nginxconfig.txt for the configuration share link
user nginx;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 65535;
# Load modules
include /etc/nginx/modules-enabled/*.conf;
events {
multi_accept on;
worker_connections 65535;
}
http {
charset utf-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
log_not_found off;
types_hash_max_size 2048;
types_hash_bucket_size 64;
client_max_body_size 16M;
# MIME
include mime.types;
default_type application/octet-stream;
# Logging
access_log /dev/stdout;
error_log /dev/stderr warn;
# 上游 Next.js 服务器(端口 3003
upstream nextjs {
# 使用容器名称(如果在同一个 Docker 网络)
server website-01:3002;
# 如果使用宿主机 IP取消下面这行注释并注释上面那行
# server 172.17.0.1:3002;
keepalive 64;
}
# HTTP 服务器
server {
listen 8085;
listen [::]:8085;
server_name _;
# 静态资源缓存(由 Next.js 提供)
location /_next/static {
proxy_pass http://nextjs;
proxy_http_version 1.1;
proxy_set_header Connection "";
expires 365d;
add_header Cache-Control "public, immutable";
}
location /static {
proxy_pass http://nextjs;
proxy_http_version 1.1;
proxy_set_header Connection "";
expires 365d;
add_header Cache-Control "public, immutable";
}
# 图标文件缓存
location ~* \.(ico|svg|png|jpg|jpeg|gif|webp)$ {
proxy_pass http://nextjs;
expires 30d;
add_header Cache-Control "public, immutable";
}
# API 路由代理
location /api {
proxy_pass http://nextjs;
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;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 所有其他请求代理到 Next.jsSSR
location / {
proxy_pass http://nextjs;
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;
}
# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
}
}

View File

@ -4,9 +4,9 @@
"description": "corp-official-website Next.js 14 client",
"private": true,
"scripts": {
"dev": "next dev -p 3001",
"dev": "next dev -p 3002",
"build": "next build",
"start": "next start -p 3001",
"start": "next start -p 3002",
"lint": "next lint",
"format": "prettier --write \"app/**/*.{ts,tsx}\" \"components/**/*.{ts,tsx}\" \"lib/**/*.{ts,tsx}\""
},

4223
yarn.lock Normal file

File diff suppressed because it is too large Load Diff