diff --git a/tarkov/v4.0.11/Dockerfile b/tarkov/v4.0.11/Dockerfile
index 4981e4a..a44f56d 100644
--- a/tarkov/v4.0.11/Dockerfile
+++ b/tarkov/v4.0.11/Dockerfile
@@ -1,15 +1,16 @@
-FROM --platform=$TARGETOS/$TARGETARCH ghcr.io/2sharkystudios/base:ubuntu
+# ==========================================
+# STAGE 1: BUILDER
+# ==========================================
+FROM --platform=$TARGETOS/$TARGETARCH ghcr.io/2sharkystudios/base:ubuntu AS builder
LABEL author="Kyle Speight" maintainer="chillcog3142@proton.me"
ENV DEBIAN_FRONTEND=noninteractive
-# 1. Install base dependencies (Running as root by default)
RUN apt-get update \
- && apt-get install -y ca-certificates gnupg lsb-release wget curl \
+ && apt-get install -y ca-certificates gnupg lsb-release wget curl git git-lfs iproute2 libgdiplus tini software-properties-common \
&& rm -rf /var/lib/apt/lists/*
-# 2. Install .NET SDK (Running as root)
RUN wget -q https://dot.net/v1/dotnet-install.sh \
&& chmod +x dotnet-install.sh \
&& D_V="$(curl -sSL https://dotnet.microsoft.com/en-us/download/dotnet/9.0 | grep -i '
SDK 9.*.*
' | head -1 | awk -F\" '{print $3}' | awk '{print $2;}' | sed 's/<\/h3>//g')" \
@@ -17,7 +18,6 @@ RUN wget -q https://dot.net/v1/dotnet-install.sh \
&& ln -s /usr/share/dotnet /usr/bin/dotnet \
&& rm dotnet-install.sh
-# 3. Install PowerShell (Running as root)
RUN mkdir -p /etc/apt/keyrings \
&& curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/keyrings/microsoft-prod.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/repos/microsoft-ubuntu-jammy-prod jammy main" > /etc/apt/sources.list.d/microsoft-prod.list \
@@ -25,30 +25,56 @@ RUN mkdir -p /etc/apt/keyrings \
&& apt-get install -y powershell \
&& rm -rf /var/lib/apt/lists/*
-# 4. Install remaining dependencies (Running as root)
-RUN apt-get update \
- && apt-get install -y git git-lfs iproute2 libgdiplus tini software-properties-common \
- && rm -rf /var/lib/apt/lists/*
+WORKDIR /home/container/git
+RUN git clone https://github.com/2SharkyStudios/SPT-Server-Build.git . \
+ && git lfs pull
-# 5. Build the application (Running as root)
-RUN mkdir -p /home/container/git/ /home/container/build/ \
- && cd /home/container/ \
- && git clone https://github.com/2SharkyStudios/SPT-Server-Build.git /home/container/git \
- && cd /home/container/git/ \
- && git lfs pull \
- && cd /home/container/git/SPTarkov.Server/ \
- && dotnet restore \
+WORKDIR /home/container/git/SPTarkov.Server/
+RUN dotnet restore \
&& dotnet build -o /home/container/build/ -c Release -p:SptBuildType=RELEASE -p:SptVersion=4.0.11
-# 6. Switch to non-root user NOW (After all installations are done)
+# ==========================================
+# STAGE 2: RUNTIME
+# ==========================================
+FROM --platform=$TARGETOS/$TARGETARCH ghcr.io/2sharkystudios/base:ubuntu AS runtime
+
+LABEL author="Kyle Speight" maintainer="chillcog3142@proton.me"
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update \
+ && apt-get install -y ca-certificates gnupg lsb-release wget curl \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN wget -q https://dot.net/v1/dotnet-install.sh \
+ && chmod +x dotnet-install.sh \
+ && D_V="$(curl -sSL https://dotnet.microsoft.com/en-us/download/dotnet/9.0 | grep -i 'SDK 9.*.*
' | head -1 | awk -F\" '{print $3}' | awk '{print $2;}' | sed 's/<\/h3>//g')" \
+ && ./dotnet-install.sh -i /usr/share -v "$D_V" \
+ && ln -s /usr/share/dotnet /usr/bin/dotnet \
+ && rm dotnet-install.sh
+
+RUN mkdir -p /etc/apt/keyrings \
+ && curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/keyrings/microsoft-prod.gpg \
+ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/repos/microsoft-ubuntu-jammy-prod jammy main" > /etc/apt/sources.list.d/microsoft-prod.list \
+ && apt-get update \
+ && apt-get install -y powershell \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN apt-get update \
+ && apt-get install -y iproute2 libgdiplus tini \
+ && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /home/container/
+COPY --from=builder /home/container/build/ /home/container/build/
+COPY --from=builder /home/container/git/SPTarkov.Server/ /home/container/git/SPTarkov.Server/
+
USER container
ENV USER=container HOME=/home/container
-WORKDIR /home/container/
-
-STOPSIGNAL SIGINT
COPY --chown=container:container ./../entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
+STOPSIGNAL SIGINT
+
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
CMD ["/entrypoint.sh"]
\ No newline at end of file