From d7ccd3069fb1937cdcc768edd5e3e7af0e8679e1 Mon Sep 17 00:00:00 2001 From: femsci Date: Thu, 27 Apr 2023 12:53:23 +0200 Subject: [PATCH] Create Dockerfile --- .dockerignore | 4 +++ Dockerfile | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c0e4869 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +* +!**.sln +!/src/ +!/test/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9caa133 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,74 @@ +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build + +WORKDIR /source + +COPY *.sln ./ + +COPY src/IPMeow.Cli/*.csproj ./src/IPMeow.Cli/ +COPY src/IPMeow.Dhcp/*.csproj ./src/IPMeow.Dhcp/ +COPY src/IPMeow.Lib/*.csproj ./src/IPMeow.Lib/ +COPY src/IPMeow.Server/*.csproj ./src/IPMeow.Server/ +COPY src/IPMeow.Viewer/*.csproj ./src/IPMeow.Viewer/ + +COPY test/IPMeow.Test/*.csproj test/IPMeow.Test/ + +RUN dotnet restore + +COPY src/IPMeow.Cli/ ./src/IPMeow.Cli/ +COPY src/IPMeow.Dhcp/ ./src/IPMeow.Dhcp/ +COPY src/IPMeow.Lib/ ./src/IPMeow.Lib/ +COPY src/IPMeow.Server/ ./src/IPMeow.Server/ +COPY src/IPMeow.Viewer/ ./src/IPMeow.Viewer/ + +RUN dotnet build --no-restore + +COPY test/IPMeow.Test/ test/IPMeow.Test/ + +RUN dotnet test + +RUN mkdir -p /publish/{dhcp,server,viewer} +RUN dotnet publish src/IPMeow.Server -c Release --no-self-contained -o /publish/server +RUN dotnet publish src/IPMeow.Viewer -c Release --no-self-contained -o /publish/viewer +RUN dotnet publish src/IPMeow.Dhcp -c Release --no-self-contained -o /publish/dhcp + +# IPMeow DHCP server + +FROM mcr.microsoft.com/dotnet/runtime:7.0 AS dhcp +WORKDIR /srv + +COPY --from=build /publish/dhcp/ /srv + +EXPOSE 80 +EXPOSE 443 +EXPOSE 67/udp +EXPOSE 547/udp + +ENTRYPOINT [ "dotnet", "IPMeow.Dhcp.dll" ] + +# IPMeow server + +FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS server +WORKDIR /srv + +COPY --from=build /publish/server/ /srv + +# Optional embedded DHCP server +EXPOSE 80 +EXPOSE 443 +EXPOSE 67/udp +EXPOSE 547/udp + +ENTRYPOINT [ "dotnet", "IPMeow.Server.dll" ] + +# IPMeow monitor server + +FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS viewer +WORKDIR /srv + +COPY --from=build /publish/viewer/ /srv + +EXPOSE 80 +EXPOSE 443 + +ENTRYPOINT [ "dotnet", "IPMeow.Viewer.dll" ] +