From c3f181c9e06d18d41787dc1406a41402e3bc9e20 Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Wed, 10 May 2023 22:02:50 +0300 Subject: [PATCH] Clean up the docker file --- DiscordChatExporter.Cli.dockerfile | 31 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/DiscordChatExporter.Cli.dockerfile b/DiscordChatExporter.Cli.dockerfile index 318a097..60f9e07 100644 --- a/DiscordChatExporter.Cli.dockerfile +++ b/DiscordChatExporter.Cli.dockerfile @@ -1,5 +1,7 @@ # -- Build -FROM mcr.microsoft.com/dotnet/sdk:7.0-alpine AS build +# Use the same platform for the build image as the runtime image, so that it's easier +# to produce a self-contained assembly for the right platform. +FROM mcr.microsoft.com/dotnet/sdk:7.0-runtime AS build WORKDIR /build @@ -9,6 +11,7 @@ COPY Directory.Build.props ./ COPY DiscordChatExporter.Core ./DiscordChatExporter.Core COPY DiscordChatExporter.Cli ./DiscordChatExporter.Cli +# Publish a self-contained assembly so we can use a slimmer runtime image RUN dotnet publish DiscordChatExporter.Cli \ --self-contained \ --use-current-runtime \ @@ -16,29 +19,27 @@ RUN dotnet publish DiscordChatExporter.Cli \ --output ./publish # -- Run +# Use Alpine for the runtime image due to its smaller size. +# Use `runtime-deps` instead of `runtime` since we're running a self-contained assembly. +# https://github.com/dotnet/dotnet-docker/blob/main/samples/selecting-tags.md FROM mcr.microsoft.com/dotnet/runtime-deps:7.0-alpine -# Alpine dotnet image doesn't include timezone data, which is needed -# for certain date/time operations. +# Alpine image doesn't include timezone data, which is needed for certain date/time operations +# https://github.com/dotnet/dotnet-docker/blob/main/samples/enable-globalization.md RUN apk add --no-cache tzdata -# Create a non-root user to run the app, so that the output files -# can be accessed by the host. +# Create a non-root user to run the app, so that the output files can be accessed by the host # https://github.com/Tyrrrz/DiscordChatExporter/issues/851 -RUN adduser \ - --disabled-password \ - --no-create-home \ - dce - +RUN adduser --disabled-password --no-create-home dce USER dce COPY --from=build /build/publish /opt/dce -# Need to keep this as /out for backwards compatibility with documentation. -# A lot of people have this directory mounted in their scripts files, so -# changing it would break existing workflows. +# Add the app directory to the PATH so that it's easier to run the app via `docker exec` +ENV PATH="$PATH:/opt/dce" + +# This directory is exposed to the user for mounting purposes, so it's important +# that it stays the same for backwards compatibility. WORKDIR /out -# Add the app directory to PATH so that it's easier to debug using a shell -ENV PATH="$PATH:/opt/dce" ENTRYPOINT ["DiscordChatExporter.Cli"]