summaryrefslogtreecommitdiff
path: root/Impostor-dev/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Impostor-dev/Dockerfile')
-rw-r--r--Impostor-dev/Dockerfile39
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