ci: 新增 Gitea Actions 自动部署到群晖
部署到群晖 / deploy (push) Failing after 42s

push main 触发:docker build Dockerfile.prod → 停旧启新容器
端口 10101:10101,数据卷按 volume1(db/logs)+ volume2(视频)分卷

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuming
2026-04-24 22:00:36 +08:00
parent ad97fd3da5
commit c9ee05afde
2 changed files with 116 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
# 多阶段构建 Dockerfile
# 第一阶段:构建前端
# 使用国内镜像源,避免 Docker Hub 拉取失败(可改为 node:18-alpine 若已配置 Docker 镜像加速)
FROM registry.cn-hangzhou.aliyuncs.com/library/node:18-alpine AS frontend-builder
WORKDIR /app/frontend
# 复制前端依赖文件
COPY app/package.json app/pnpm-lock.yaml* ./
# 配置 npm 和 pnpm 使用国内镜像源
RUN npm config set registry https://registry.npmmirror.com && \
npm install -g pnpm && \
pnpm config set registry https://registry.npmmirror.com && \
if [ -f pnpm-lock.yaml ]; then \
pnpm install --frozen-lockfile; \
else \
npm install; \
fi
# 复制前端源码
COPY app/ ./
# 构建前端
RUN pnpm build || npm run build
# 第二阶段:构建后端
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS backend-builder
WORKDIR /src
# 复制项目文件
COPY *.csproj ./
RUN dotnet restore dy.net.csproj
# 复制所有文件
COPY . .
# 删除 macOS 资源分叉文件(._* 文件)
RUN find . -name "._*" -type f -delete
# 复制前端构建产物
COPY --from=frontend-builder /app/frontend/dist ./app/dist
# 发布后端
RUN dotnet publish dy.net.csproj -c Release -o /app/publish
# 第三阶段:运行镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS final
WORKDIR /app
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 从构建阶段复制发布文件
COPY --from=backend-builder /app/publish .
# 暴露端口
EXPOSE 10101
# 设置环境变量
ENV ASPNETCORE_URLS=http://*:10101
ENV ASPNETCORE_ENVIRONMENT=Production
# 启动应用
ENTRYPOINT ["dotnet", "dy.net.dll"]