garnet
/
Dockerfile.cbl-mariner
41 строка · 1.4 Кб
1FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-cbl-mariner2.0 AS build
2ARG TARGETARCH
3WORKDIR /src
4
5# Copy csproj and restore as distinct layers
6COPY libs/client/*.csproj libs/client/
7COPY libs/cluster/*.csproj libs/cluster/
8COPY libs/common/*.csproj libs/common/
9COPY libs/host/*.csproj libs/host/
10COPY libs/server/*.csproj libs/server/
11COPY libs/storage/Tsavorite/cs/src/core/*.csproj libs/storage/Tsavorite/cs/src/core/
12COPY libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/*.csproj libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/
13COPY main/GarnetServer/*.csproj main/GarnetServer/
14COPY metrics/HdrHistogram/*.csproj metrics/HdrHistogram/
15COPY Directory.Build.props Directory.Build.props
16COPY Directory.Packages.props Directory.Packages.props
17
18RUN dotnet restore main/GarnetServer/GarnetServer.csproj -a $TARGETARCH
19
20# Copy everthing else and publish app
21COPY Garnet.snk Garnet.snk
22COPY libs/ libs/
23COPY main/ main/
24COPY metrics/ metrics/
25COPY test/testcerts test/testcerts
26
27WORKDIR /src/main/GarnetServer
28RUN dotnet publish -a $TARGETARCH -c Release -o /app --no-restore --self-contained false -f net8.0
29
30# Final stage/image
31FROM mcr.microsoft.com/dotnet/runtime:8.0-cbl-mariner2.0 AS runtime
32WORKDIR /app
33COPY --from=build /app .
34
35# Run container as a non-root user
36USER $APP_UID
37
38# For inter-container communication.
39EXPOSE 6379
40
41ENTRYPOINT ["/app/GarnetServer"]
42