Namespaces, assemblies, projects and directories, the solution, binaries, images, systemd units, config paths, environment variables, protocol method names, the media type and the raw chunk magic all move to MoShiro/moshiro. Existing data and deployments are not compatible and must be recreated. Also fix the architecture tests after the solution layout change and make the update tests independent of their order.
44 lines
2.3 KiB
Docker
44 lines
2.3 KiB
Docker
FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine-aot AS build
|
|
|
|
WORKDIR /src/backend
|
|
COPY restore/backend/ ./
|
|
# restore 也要带 PublishAot:不然不会还原 ILCompiler,之后 --no-restore 的发布就悄悄变成「裁剪过的框架依赖程序」
|
|
RUN dotnet restore agent/src/MoShiro.Agent -r linux-musl-x64 -p:PublishAot=true --artifacts-path /artifacts \
|
|
&& dotnet restore fleet/tools/fleet-enroll -r linux-musl-x64 -p:PublishAot=true --artifacts-path /artifacts
|
|
|
|
COPY source/backend/ ./
|
|
# 构建信息:CI 通过 --build-arg 传入;不传就是空(放在 restore 之后,每次构建都变的时间不会让依赖还原的缓存失效)
|
|
ARG MOSHIRO_TAG=
|
|
ARG MOSHIRO_COMMIT=
|
|
ARG MOSHIRO_BUILT_AT=
|
|
ENV MOSHIRO_TAG=$MOSHIRO_TAG MOSHIRO_COMMIT=$MOSHIRO_COMMIT MOSHIRO_BUILT_AT=$MOSHIRO_BUILT_AT
|
|
RUN dotnet publish agent/src/MoShiro.Agent -m:3 -c Release -r linux-musl-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-musl-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/moshiro-agent && test -x /out/enroll/fleet-enroll \
|
|
&& test "$(stat -c%s /out/agent/moshiro-agent)" -gt 2000000 && test "$(stat -c%s /out/enroll/fleet-enroll)" -gt 2000000
|
|
|
|
FROM mcr.microsoft.com/dotnet/runtime-deps:10.0-alpine
|
|
|
|
ARG APP_VERSION=main
|
|
LABEL org.opencontainers.image.title="MoShiro Agent" \
|
|
org.opencontainers.image.description="MoShiro 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/moshiro-agent /usr/local/bin/moshiro-agent
|
|
COPY --chown=1654:1654 --from=build /out/enroll/fleet-enroll /usr/local/bin/fleet-enroll
|
|
COPY --chown=1654:1654 config/ /etc/moshiro/
|
|
|
|
USER 1654:1654
|
|
WORKDIR /etc/moshiro
|
|
VOLUME ["/etc/moshiro"]
|
|
ENTRYPOINT ["/usr/local/bin/moshiro-agent"]
|
|
CMD ["--config", "/etc/moshiro/agent.json"]
|