e6c5587637
- 数据看板作者视频播放接口从 /api/video/stream 改为 /api/Video/play(后端只有 Play action,之前笔误导致 404) - 全局 Modal 小屏适配:body max-height + 自定义 10px 深色滚动条,兼容 full-modal 和登录页 login-modal - Docker 镜像换 Alpine + 内置 ffmpeg,避开 Ubuntu apt 网络问题 - 新增 .dockerignore 排除 node_modules / logs / videos / db 等构建噪音 - 移除已废弃的 DyQrCodeService(旧扫码登录) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
53 lines
1.3 KiB
Docker
53 lines
1.3 KiB
Docker
# 多阶段构建 Dockerfile
|
|
# 第一阶段:构建前端
|
|
FROM node:18-alpine AS frontend-builder
|
|
|
|
WORKDIR /app/frontend
|
|
|
|
COPY app/package.json app/pnpm-lock.yaml* ./
|
|
|
|
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 --no-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 . .
|
|
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
|
|
|
|
# 第三阶段:运行镜像(Alpine 版:apk 包更小、代理下更易通过)
|
|
FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine AS final
|
|
|
|
WORKDIR /app
|
|
|
|
ENV TZ=Asia/Shanghai
|
|
RUN apk add --no-cache tzdata ffmpeg && \
|
|
cp /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"]
|