Files
Telegram-Panel/Dockerfile
meoacgx 7e0c1fecb8 feat(update): 支持 Docker 场景一键更新并接入 Release 更新包
本次版本主要更新:
- 新增应用内一键更新:在系统设置页增加“应用更新(Docker)”,支持检查新版本、匹配当前架构更新包、点击后自动下载并部署。
- 新增自更新服务 AppSelfUpdateService:基于 GitHub Release 读取版本与资产,执行下载、解压、目录切换(app-current/app-previous)并触发程序重启。
- 新增 SelfUpdateOptions 配置:支持开关、工作目录、Docker-only 限制、下载超时与重启延迟等参数化控制。
- Docker 启动链路改造:新增 entrypoint 脚本,容器重启后优先从 /data/app-current 启动更新版本,并统一挂载 /data/logs 与 /data/appsettings.local.json。
- Release 工作流增强:自动发布时同时构建并上传 linux-x64/linux-arm64 zip 资产,为面板内一键更新提供标准下载源。
- CI 触发范围补齐:Docker workflow 监听 docker 目录变更,确保 entrypoint 变更可触发镜像构建验证。
- 更新检查兼容性修复:为 UpdateCheckService 的 GitHub 字段增加 JsonPropertyName 映射,确保 tag/release 信息解析稳定。
- README 补充自动更新文档:新增面板一键更新流程、资产依赖与使用限制说明。
2026-03-03 02:33:19 +08:00

42 lines
1.4 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore "TelegramPanel.sln"
RUN dotnet publish "src/TelegramPanel.Web/TelegramPanel.Web.csproj" -c Release -o /app/publish --no-restore
# tdata 运行时依赖(避免在容器内通过 apt 安装 Node
FROM node:20-bookworm-slim AS tdata-runtime
WORKDIR /opt/telegram-panel-tdata-runtime
RUN printf '{\n "name": "telegram-panel-tdata-runtime",\n "private": true,\n "type": "module"\n}\n' > package.json \
&& npm install --silent @mtcute/convert @mtcute/node
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
WORKDIR /app
ENV ASPNETCORE_URLS=http://+:5000
ENV TELEGRAM_PANEL_TDATA_RUNTIME_DIR=/app/tdata-runtime
EXPOSE 5000
# 持久化目录:/data通过 docker-compose 挂载)
# - 数据库:/data/telegram-panel.db
# - session/data/sessions/
# - 本地配置:/data/appsettings.local.jsonUI 保存 Telegram ApiId/ApiHash/同步开关等)
# - 后台密码:/data/admin_auth.json
RUN mkdir -p /data /data/sessions /data/logs \
&& rm -rf /app/logs \
&& ln -s /data/logs /app/logs \
&& ln -s /data/appsettings.local.json /app/appsettings.local.json || true
COPY --from=build /app/publish .
COPY --from=tdata-runtime /usr/local /usr/local
COPY --from=tdata-runtime /opt/telegram-panel-tdata-runtime /app/tdata-runtime
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
RUN node -v && npm -v
ENTRYPOINT ["/entrypoint.sh"]