|
1 |
| -ARG BUILD_IMAGE_TAG="7.0-jammy" |
2 |
| -ARG RUN_IMAGE_TAG="7.0-alpine" |
| 1 | +# Usage: docker buildx build . |
| 2 | + |
| 3 | +ARG BUILD_IMAGE_TAG="8.0-jammy" |
| 4 | +ARG RUN_IMAGE_TAG="8.0-alpine" |
| 5 | + |
| 6 | +#ARG PLATFORM=$BUILDPLATFORM |
| 7 | +ARG PLATFORM=$TARGETPLATFORM |
3 | 8 |
|
4 | 9 | #########################################################################
|
5 |
| -# build and publish |
| 10 | +# .NET build |
6 | 11 | #########################################################################
|
7 | 12 |
|
8 |
| -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:$BUILD_IMAGE_TAG AS build |
9 |
| -ARG BUILD_CONFIGURATION=Release |
10 |
| - |
11 |
| -ARG TARGETARCH |
12 |
| -ARG TARGETPLATFORM |
13 |
| -ARG BUILDPLATFORM |
| 13 | +# ARG BUILDPLATFORM |
| 14 | +FROM --platform=$PLATFORM mcr.microsoft.com/dotnet/sdk:$BUILD_IMAGE_TAG AS build |
14 | 15 |
|
15 |
| -WORKDIR /src |
16 |
| -COPY ["service/Service/Service.csproj", "service/Service/"] |
17 |
| -RUN dotnet restore "./service/Service/./Service.csproj" |
| 16 | +ARG BUILD_CONFIGURATION=Release |
18 | 17 |
|
19 |
| -COPY ["extensions", "extensions"] |
20 |
| -COPY ["tools", "tools"] |
21 |
| -COPY ["service", "service"] |
| 18 | +COPY . /src/ |
22 | 19 | WORKDIR "/src/service/Service"
|
23 |
| -RUN dotnet build "./Service.csproj" -c $BUILD_CONFIGURATION -o /app/build |
24 |
| - |
25 |
| -FROM build AS publish |
26 |
| -ARG BUILD_CONFIGURATION=Release |
| 20 | +RUN dotnet build Service.csproj -c $BUILD_CONFIGURATION -o /app/build |
27 | 21 | RUN dotnet publish "./Service.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
28 | 22 |
|
29 | 23 | #########################################################################
|
30 |
| -# run |
| 24 | +# prepare final content |
31 | 25 | #########################################################################
|
32 | 26 |
|
33 |
| -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/aspnet:$RUN_IMAGE_TAG AS base |
| 27 | +ARG PLATFORM |
| 28 | +FROM --platform=$PLATFORM mcr.microsoft.com/dotnet/aspnet:$RUN_IMAGE_TAG AS base |
| 29 | + |
34 | 30 | # Non-root user that will run the service
|
35 | 31 | ARG USER=km
|
| 32 | + |
| 33 | +WORKDIR /app |
| 34 | + |
36 | 35 | RUN \
|
37 | 36 | # Create user
|
38 | 37 | #Debian: useradd --create-home --user-group $USER --shell /bin/bash && \
|
39 | 38 | adduser -D -h /app -s /bin/sh $USER && \
|
40 | 39 | # Allow user to access the build
|
41 | 40 | chown -R $USER.$USER /app
|
42 | 41 |
|
| 42 | +COPY --from=build --chown=km:km --chmod=0550 /app/publish . |
| 43 | + |
| 44 | +######################################################################### |
| 45 | +# runtime |
| 46 | +######################################################################### |
| 47 | + |
| 48 | +LABEL org.opencontainers.image.authors="Devis Lucato, https://github.com/dluc" |
| 49 | +MAINTAINER Devis Lucato "https://github.com/dluc" |
| 50 | + |
43 | 51 | # Define current user
|
44 | 52 | USER $USER
|
45 | 53 |
|
46 | 54 | # Used by .NET and KM to load appsettings.Production.json
|
47 | 55 | ENV ASPNETCORE_ENVIRONMENT Production
|
48 | 56 | ENV ASPNETCORE_URLS http://+:9001
|
| 57 | +ENV ASPNETCORE_HTTP_PORTS 9001 |
49 | 58 |
|
50 |
| -WORKDIR /app |
51 | 59 | EXPOSE 9001
|
52 | 60 |
|
53 |
| -FROM base AS final |
54 |
| - |
55 |
| -MAINTAINER Devis Lucato "https://github.com/dluc" |
56 |
| -LABEL org.opencontainers.image.authors="Devis Lucato, https://github.com/dluc" |
57 |
| -WORKDIR /app |
58 |
| - |
59 |
| -COPY --from=publish --chown=km:km --chmod=0550 /app/publish . |
60 |
| - |
61 | 61 | # Define executable
|
62 | 62 | ENTRYPOINT ["dotnet", "Microsoft.KernelMemory.ServiceAssembly.dll"]
|
0 commit comments