mirror of
https://github.com/moeacgx/Telegram-Panel.git
synced 2026-05-06 14:00:32 +08:00
本次版本主要更新: - 新增应用内一键更新:在系统设置页增加“应用更新(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 补充自动更新文档:新增面板一键更新流程、资产依赖与使用限制说明。
42 lines
1.4 KiB
Docker
42 lines
1.4 KiB
Docker
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.json(UI 保存 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"]
|
||
|