106 lines
4.6 KiB
Docker
106 lines
4.6 KiB
Docker
FROM alpine:3.22 AS base
|
|
WORKDIR /app
|
|
|
|
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
|
WORKDIR /src
|
|
|
|
COPY ["RobotNet.ScriptManager/RobotNet.ScriptManager.csproj", "RobotNet.ScriptManager/"]
|
|
COPY ["RobotNet.Script.Shares/RobotNet.Script.Shares.csproj", "RobotNet.Script.Shares/"]
|
|
COPY ["RobotNet.RobotShares/RobotNet.RobotShares.csproj", "RobotNet.RobotShares/"]
|
|
COPY ["RobotNet.MapShares/RobotNet.MapShares.csproj", "RobotNet.MapShares/"]
|
|
COPY ["RobotNet.Script/RobotNet.Script.csproj", "RobotNet.Script/"]
|
|
COPY ["RobotNet.Script.Expressions/RobotNet.Script.Expressions.csproj", "RobotNet.Script.Expressions/"]
|
|
COPY ["RobotNet.Shares/RobotNet.Shares.csproj", "RobotNet.Shares/"]
|
|
COPY ["RobotNet.OpenIddictClient/RobotNet.OpenIddictClient.csproj", "RobotNet.OpenIddictClient/"]
|
|
COPY ["RobotNet.Clients/RobotNet.Clients.csproj", "RobotNet.Clients/"]
|
|
|
|
# RUN dotnet package remove "Microsoft.EntityFrameworkCore.Tools" --project "RobotNet.ScriptManager/RobotNet.ScriptManager.csproj"
|
|
RUN dotnet restore "RobotNet.ScriptManager/RobotNet.ScriptManager.csproj"
|
|
|
|
COPY RobotNet.Script/ RobotNet.Script/
|
|
COPY RobotNet.Script.Expressions/ RobotNet.Script.Expressions/
|
|
RUN rm -rf ./RobotNet.Script/bin
|
|
RUN rm -rf ./RobotNet.Script/obj
|
|
RUN rm -rf ./RobotNet.Script.Expressions/bin
|
|
RUN rm -rf ./RobotNet.Script.Expressions/obj
|
|
|
|
WORKDIR "/src/RobotNet.Script"
|
|
RUN dotnet build "RobotNet.Script.csproj" -c Release -o /app/script/
|
|
|
|
WORKDIR /src
|
|
|
|
COPY RobotNet.ScriptManager/ RobotNet.ScriptManager/
|
|
COPY RobotNet.Script.Shares/ RobotNet.Script.Shares/
|
|
COPY RobotNet.RobotShares/ RobotNet.RobotShares/
|
|
COPY RobotNet.MapShares/ RobotNet.MapShares/
|
|
COPY RobotNet.Script/ RobotNet.Script/
|
|
COPY RobotNet.Shares/ RobotNet.Shares/
|
|
COPY RobotNet.OpenIddictClient/ RobotNet.OpenIddictClient/
|
|
COPY RobotNet.Clients/ RobotNet.Clients/
|
|
|
|
RUN rm -rf ./RobotNet.ScriptManager/bin
|
|
RUN rm -rf ./RobotNet.ScriptManager/obj
|
|
RUN rm -rf ./RobotNet.Script.Shares/bin
|
|
RUN rm -rf ./RobotNet.Script.Shares/obj
|
|
RUN rm -rf ./RobotNet.RobotShares/bin
|
|
RUN rm -rf ./RobotNet.RobotShares/obj
|
|
RUN rm -rf ./RobotNet.MapShares/bin
|
|
RUN rm -rf ./RobotNet.MapShares/obj
|
|
RUN rm -rf ./RobotNet.Script/bin
|
|
RUN rm -rf ./RobotNet.Script/obj
|
|
RUN rm -rf ./RobotNet.Shares/bin
|
|
RUN rm -rf ./RobotNet.Shares/obj
|
|
RUN rm -rf ./RobotNet.OpenIddictClient/bin
|
|
RUN rm -rf ./RobotNet.OpenIddictClient/obj
|
|
RUN rm -rf ./RobotNet.Clients/bin
|
|
RUN rm -rf ./RobotNet.Clients/obj
|
|
|
|
RUN rm /src/RobotNet.ScriptManager/wwwroot/dlls/*
|
|
RUN cp /app/script/RobotNet.Script.dll /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
RUN cp /app/script/RobotNet.Script.xml /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
RUN cp /app/script/RobotNet.Script.Expressions.dll /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
RUN cp /app/script/RobotNet.Script.Expressions.xml /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
RUN cp /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/$DOTNET_VERSION/ref/net9.0/System.Collections.dll /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
RUN cp /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/$DOTNET_VERSION/ref/net9.0/System.Linq.Expressions.dll /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
RUN cp /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/$DOTNET_VERSION/ref/net9.0/System.Runtime.dll /src/RobotNet.ScriptManager/wwwroot/dlls/
|
|
|
|
WORKDIR "/src/RobotNet.ScriptManager"
|
|
RUN dotnet build "RobotNet.ScriptManager.csproj" -c Release -o /app/build
|
|
|
|
FROM build AS publish
|
|
WORKDIR /src/RobotNet.ScriptManager
|
|
RUN dotnet publish "RobotNet.ScriptManager.csproj" \
|
|
-c Release \
|
|
-o /app/publish \
|
|
--runtime linux-musl-x64 \
|
|
--self-contained true \
|
|
/p:PublishTrimmed=false \
|
|
/p:PublishReadyToRun=true
|
|
|
|
WORKDIR /app/publish
|
|
RUN mkdir -p /app/publish/scripts
|
|
RUN mkdir -p /app/publish/dlls
|
|
RUN cp /app/build/RobotNet.Script.dll /app/publish/dlls/RobotNet.Script.dll
|
|
RUN cp /app/build/RobotNet.Script.Expressions.dll /app/publish/dlls/RobotNet.Script.Expressions.dll
|
|
RUN cp /usr/share/dotnet/shared/Microsoft.NETCore.App/$DOTNET_VERSION/System.Linq.Expressions.dll /app/publish/dlls/
|
|
RUN cp /usr/share/dotnet/shared/Microsoft.NETCore.App/$DOTNET_VERSION/System.Private.CoreLib.dll /app/publish/dlls/
|
|
RUN cp /usr/share/dotnet/shared/Microsoft.NETCore.App/$DOTNET_VERSION/System.Runtime.dll /app/publish/dlls/
|
|
|
|
FROM base AS final
|
|
WORKDIR /app
|
|
COPY --from=publish /app/publish /app/
|
|
|
|
RUN apk add --no-cache icu-libs tzdata ca-certificates
|
|
|
|
RUN echo '#!/bin/sh' >> ./start.sh
|
|
RUN echo 'update-ca-certificates' >> ./start.sh
|
|
RUN echo 'cd /app' >> ./start.sh
|
|
RUN echo 'exec ./RobotNet.ScriptManager' >> ./start.sh
|
|
|
|
RUN chmod +x ./RobotNet.ScriptManager
|
|
RUN chmod +x ./start.sh
|
|
|
|
# Use the start script to ensure certificates are updated before starting the application
|
|
EXPOSE 443
|
|
ENTRYPOINT ["./start.sh"]
|