The versions page shows each node's update state with update buttons, API tokens get a release scope that can only register releases (used by CI), and the CI image and release builds now pass the tag, commit and build time.
44 lines
2.3 KiB
Docker
44 lines
2.3 KiB
Docker
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble-aot AS build
|
|
|
|
WORKDIR /src/backend
|
|
COPY restore/backend/ ./
|
|
# restore 也要带 PublishAot:不然不会还原 ILCompiler,之后 --no-restore 的发布就悄悄变成「裁剪过的框架依赖程序」
|
|
RUN dotnet restore agent/src/Monitor.Agent -r linux-x64 -p:PublishAot=true --artifacts-path /artifacts \
|
|
&& dotnet restore fleet/tools/fleet-enroll -r linux-x64 -p:PublishAot=true --artifacts-path /artifacts
|
|
|
|
COPY source/backend/ ./
|
|
# 构建信息:CI 通过 --build-arg 传入;不传就是空(放在 restore 之后,每次构建都变的时间不会让依赖还原的缓存失效)
|
|
ARG MONITOR_TAG=
|
|
ARG MONITOR_COMMIT=
|
|
ARG MONITOR_BUILT_AT=
|
|
ENV MONITOR_TAG=$MONITOR_TAG MONITOR_COMMIT=$MONITOR_COMMIT MONITOR_BUILT_AT=$MONITOR_BUILT_AT
|
|
RUN dotnet publish agent/src/Monitor.Agent -m:3 -c Release -r linux-x64 \
|
|
--self-contained true --no-restore -p:PublishAot=true -p:UseAotAnywhere=false \
|
|
-p:UseAppHost=true -p:StripSymbols=true \
|
|
-p:DebugType=none -p:DebugSymbols=false --artifacts-path /artifacts -o /out/agent \
|
|
&& dotnet publish fleet/tools/fleet-enroll -m:3 -c Release -r linux-x64 \
|
|
--self-contained true --no-restore -p:PublishAot=true -p:UseAotAnywhere=false \
|
|
-p:UseAppHost=true -p:StripSymbols=true \
|
|
-p:DebugType=none -p:DebugSymbols=false --artifacts-path /artifacts -o /out/enroll
|
|
# 原生程序有几 MB;几十 KB 的是只会去找 .dll 的启动器
|
|
RUN test -x /out/agent/monitor-agent && test -x /out/enroll/fleet-enroll \
|
|
&& test "$(stat -c%s /out/agent/monitor-agent)" -gt 2000000 && test "$(stat -c%s /out/enroll/fleet-enroll)" -gt 2000000
|
|
|
|
FROM mcr.microsoft.com/dotnet/runtime-deps:10.0-noble-chiseled-extra
|
|
|
|
ARG APP_VERSION=main
|
|
LABEL org.opencontainers.image.title="Monitor Agent" \
|
|
org.opencontainers.image.description="MyMonitor node agent for Linux" \
|
|
org.opencontainers.image.licenses="Apache-2.0" \
|
|
org.opencontainers.image.version="$APP_VERSION"
|
|
|
|
COPY --chown=1654:1654 --from=build /out/agent/monitor-agent /usr/local/bin/monitor-agent
|
|
COPY --chown=1654:1654 --from=build /out/enroll/fleet-enroll /usr/local/bin/fleet-enroll
|
|
COPY --chown=1654:1654 config/ /etc/monitor/
|
|
|
|
USER 1654:1654
|
|
WORKDIR /etc/monitor
|
|
VOLUME ["/etc/monitor"]
|
|
ENTRYPOINT ["/usr/local/bin/monitor-agent"]
|
|
CMD ["--config", "/etc/monitor/agent.json"]
|