Как запустить приложение .NET Core 2 в Docker в Linux без полномочий root - PullRequest
0 голосов
/ 29 ноября 2018

Я успешно запускаю простое приложение веб-API dotnet core 2.1 в докере, но хочу запустить его под пользовательской учетной записью, а не под root, поскольку это, предположительно, лучшая практика.

Я могу добавить учетную запись иперейдите на эту учетную запись, но Kestral выдает ошибку при запуске.

Я неоднократно искал в Интернете и не могу найти решения.

Вот файл Docker.

FROM sel-docker.artifactory.metro.ad.selinc.com/microsoft/dotnet:2.1.500-sdk-    
alpine3.7 AS build-env
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# build runtime image
FROM sel-docker.artifactory.metro.ad.selinc.com/microsoft/dotnet:2.1.6- 
aspnetcore-runtime-alpine3.7

# Create a group and user
RUN addgroup -S -g 1000 customgroup \
&& adduser -S -u 1000 -G customgroup -s /bin/sh customuser

WORKDIR /app
RUN mkdir -p /local/
COPY --from=build-env /app/out .

RUN chown customuser:customgroup /local
RUN chown customuser:customgroup /app

# Tell docker that all future commands should run as the appuser user
USER customuser
ENTRYPOINT ["dotnet", "ConfigApi.dll"]

А вот ошибка Кестраля, когда я запускаю результирующее изображение.

crit: Microsoft.AspNetCore.Server.Kestrel[0]
Unable to start Kestrel.
System.Net.Sockets.SocketException (13): Permission denied
...

Кто-нибудь решил эту проблему?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Кто-нибудь получил это работает.Я устал от использования порта 5000 и до сих пор не смог заставить это работать с пользовательским пользователем

0 голосов
/ 29 ноября 2018

В linux привязка к порту менее 1024 требует, чтобы пользователь был суперпользователем.Вы можете просто использовать порт по умолчанию 5000, а затем опубликовать на порт 80 на вашем хосте (если у вас нет обратного прокси).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...