Update Dockerfile
This commit is contained in:
+47
-21
@@ -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 '<h3 id="sdk-9.*">SDK 9.*.*</h3>' | 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 '<h3 id="sdk-9.*">SDK 9.*.*</h3>' | 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"]
|
||||
Reference in New Issue
Block a user