# storage-service: общий gRPC-сервис данных (вложения источников). # # КОНТЕКСТ СБОРКИ — корень репозитория: Deal.Storage.csproj ссылается на src/contracts/Deal.Proto.csproj # и src/grpc-hosting вне каталога сервиса. Запуск из корня: # docker build -f src/storage-service/Deal.Storage/Dockerfile . FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build WORKDIR /repo COPY src/contracts/Deal.Proto.csproj src/contracts/ COPY src/grpc-hosting/Deal.Grpc.Hosting/Deal.Grpc.Hosting.csproj src/grpc-hosting/Deal.Grpc.Hosting/ COPY src/storage-service/Directory.Build.props src/storage-service/ COPY src/storage-service/Deal.Storage/Deal.Storage.csproj src/storage-service/Deal.Storage/ RUN dotnet restore src/storage-service/Deal.Storage/Deal.Storage.csproj COPY src/contracts/ src/contracts/ COPY src/grpc-hosting/ src/grpc-hosting/ COPY src/storage-service/Deal.Storage/ src/storage-service/Deal.Storage/ RUN dotnet publish src/storage-service/Deal.Storage/Deal.Storage.csproj -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS final WORKDIR /app EXPOSE 5104 COPY --from=build /app/publish . COPY --from=ghcr.io/grpc-ecosystem/grpc-health-probe:v0.4.35 /ko-app/grpc-health-probe /bin/grpc_health_probe # Non-root: процесс работает пользователем deal (UID 10001); персистентных файлов нет. RUN useradd --uid 10001 --shell /usr/sbin/nologin --no-create-home deal ENV HOME=/tmp USER deal ENTRYPOINT ["dotnet", "Deal.Storage.dll"]