From db45b49af763cf90d11f3f2d1d6d444c30cc8d4b Mon Sep 17 00:00:00 2001 From: Velithris <13710677+Zireael-N@users.noreply.github.com> Date: Sat, 31 Dec 2022 06:37:18 +0000 Subject: [PATCH] Use Alpine as the base image in docker, publish a self-contained app (#974) --- DiscordChatExporter.Cli.dockerfile | 32 ++++++++++++++----- .../Discord/Data/Common/FileSize.cs | 4 ++- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/DiscordChatExporter.Cli.dockerfile b/DiscordChatExporter.Cli.dockerfile index cc7525c7..38c0d162 100644 --- a/DiscordChatExporter.Cli.dockerfile +++ b/DiscordChatExporter.Cli.dockerfile @@ -1,5 +1,7 @@ # Build -FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:7.0-alpine AS build + +WORKDIR /build COPY favicon.ico ./ COPY NuGet.config ./ @@ -7,16 +9,30 @@ COPY Directory.Build.props ./ COPY DiscordChatExporter.Core ./DiscordChatExporter.Core COPY DiscordChatExporter.Cli ./DiscordChatExporter.Cli -RUN dotnet publish DiscordChatExporter.Cli --configuration Release --output ./publish +RUN dotnet publish DiscordChatExporter.Cli \ + --self-contained \ + --use-current-runtime \ + --configuration Release \ + --output ./publish # Run -FROM mcr.microsoft.com/dotnet/runtime:7.0 AS run +FROM mcr.microsoft.com/dotnet/runtime-deps:7.0-alpine -RUN useradd dce +# tzdata is needed for DateTimeOffset.ToLocalTime (for TimeZoneInfo.Local, to be precise) +RUN apk add --no-cache tzdata +RUN adduser \ + --disabled-password \ + --no-create-home \ + dce USER dce +COPY --from=build /build/publish /opt/discord_chat_exporter -COPY --from=build ./publish ./ +# 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. +WORKDIR /out -WORKDIR ./out - -ENTRYPOINT ["dotnet", "../DiscordChatExporter.Cli.dll"] \ No newline at end of file +# Having it in PATH is convenient for interactive shell sessions, +# which may be useful for debugging. +ENV PATH="$PATH:/opt/discord_chat_exporter" +ENTRYPOINT ["DiscordChatExporter.Cli"] diff --git a/DiscordChatExporter.Core/Discord/Data/Common/FileSize.cs b/DiscordChatExporter.Core/Discord/Data/Common/FileSize.cs index 8fad6fd2..00380231 100644 --- a/DiscordChatExporter.Core/Discord/Data/Common/FileSize.cs +++ b/DiscordChatExporter.Core/Discord/Data/Common/FileSize.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics.CodeAnalysis; +using System.Globalization; namespace DiscordChatExporter.Core.Discord.Data.Common; @@ -39,7 +40,8 @@ public readonly partial record struct FileSize(long TotalBytes) } [ExcludeFromCodeCoverage] - public override string ToString() => $"{GetLargestWholeNumberValue():0.##} {GetLargestWholeNumberSymbol()}"; + public override string ToString() => + string.Create(CultureInfo.InvariantCulture, $"{GetLargestWholeNumberValue():0.##} {GetLargestWholeNumberSymbol()}"); } public partial record struct FileSize