diff options
Diffstat (limited to 'Impostor-dev/Dockerfile')
-rw-r--r-- | Impostor-dev/Dockerfile | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Impostor-dev/Dockerfile b/Impostor-dev/Dockerfile new file mode 100644 index 0000000..8f386da --- /dev/null +++ b/Impostor-dev/Dockerfile @@ -0,0 +1,39 @@ +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:5.0 AS build + +# See for all possible platforms +# https://github.com/containerd/containerd/blob/master/platforms/platforms.go#L17 +ARG TARGETARCH + +WORKDIR /source + +# Copy csproj and restore. +COPY src/Impostor.Server/Impostor.Server.csproj ./src/Impostor.Server/Impostor.Server.csproj +COPY src/Impostor.Api/Impostor.Api.csproj ./src/Impostor.Api/Impostor.Api.csproj +COPY src/Impostor.Hazel/Impostor.Hazel.csproj ./src/Impostor.Hazel/Impostor.Hazel.csproj + +RUN case "$TARGETARCH" in \ + amd64) NETCORE_PLATFORM='linux-x64';; \ + arm64) NETCORE_PLATFORM='linux-arm64';; \ + arm) NETCORE_PLATFORM='linux-arm';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac && \ + dotnet restore -r "$NETCORE_PLATFORM" ./src/Impostor.Server/Impostor.Server.csproj && \ + dotnet restore -r "$NETCORE_PLATFORM" ./src/Impostor.Api/Impostor.Api.csproj && \ + dotnet restore -r "$NETCORE_PLATFORM" ./src/Impostor.Hazel/Impostor.Hazel.csproj + +# Copy everything else. +COPY src/. ./src/ +RUN case "$TARGETARCH" in \ + amd64) NETCORE_PLATFORM='linux-x64';; \ + arm64) NETCORE_PLATFORM='linux-arm64';; \ + arm) NETCORE_PLATFORM='linux-arm';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac && \ + dotnet publish -c release -o /app -r "$NETCORE_PLATFORM" --no-restore ./src/Impostor.Server/Impostor.Server.csproj + +# Final image. +FROM --platform=$TARGETPLATFORM mcr.microsoft.com/dotnet/runtime:5.0 +WORKDIR /app +COPY --from=build /app ./ +EXPOSE 22023/udp +ENTRYPOINT ["./Impostor.Server"]
\ No newline at end of file |