mirror of
https://github.com/moeacgx/Telegram-Panel.git
synced 2026-09-03 07:17:51 +08:00
60 lines
2.1 KiB
Docker
60 lines
2.1 KiB
Docker
FROM node:20-bookworm-slim AS frontend-build
|
||
WORKDIR /src/frontend
|
||
|
||
COPY frontend/package.json frontend/pnpm-lock.yaml ./
|
||
RUN corepack enable \
|
||
&& pnpm install --frozen-lockfile=false
|
||
COPY frontend/ ./
|
||
RUN pnpm run build
|
||
|
||
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||
WORKDIR /src
|
||
|
||
COPY . .
|
||
COPY --from=frontend-build /src/src/TelegramPanel.Web/wwwroot/panel-spa ./src/TelegramPanel.Web/wwwroot/panel-spa
|
||
|
||
RUN dotnet restore "src/TelegramPanel.Web/TelegramPanel.Web.csproj"
|
||
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 apt-get update \
|
||
&& apt-get install -y --no-install-recommends python3 make g++ \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
RUN printf '{\n "name": "telegram-panel-tdata-runtime",\n "private": true,\n "type": "module"\n}\n' > package.json \
|
||
&& npm install --omit=dev --no-audit --no-fund --loglevel=warn @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
|
||
|
||
RUN apt-get update \
|
||
&& apt-get install -y --no-install-recommends curl \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# 持久化目录:/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 sed -i 's/\r$//' /entrypoint.sh \
|
||
&& chmod +x /entrypoint.sh
|
||
|
||
RUN node -v && npm -v
|
||
|
||
ENTRYPOINT ["/entrypoint.sh"]
|
||
|