Я не могу изменить тип проекта, это должна быть функция Azure, работающая в . net 8.
Структура решения:
- Файл решения
- Dockerfile.MyApi
- MyNamespace.MyApi (функция Azure)
MyApi.csproj => загружает общую библиотеку< /li>
- Common.csproj< /li>
Я могу собрать образ, но когда я пытаюсь запустить его в контейнере , я получаю следующую ошибку:
Необработанное исключение. System.InvalidOperationException: URI канала gRPC «http://:» не удалось проанализировать.
Мой файл dockerfile выглядит следующим образом:
Код: Выделить всё
FROM mcr.microsoft.com/dotnet/sdk:8.0-preview AS installer-env
WORKDIR /source
# copy csproj files and restore as distinct layers
COPY "MyNamespace.MyApi/*.csproj" "MyNamespace.MyApi/"
COPY "MyNamespace.Common/*.csproj" "MyNamespace.Common/"
RUN dotnet restore "MyNamespace.MyApi/MyNamespace.MyApi.csproj"
# copy and build app and libraries
COPY "MyNamespace.MyApi/" "MyNamespace.MyApi/"
COPY "MyNamespace.Common/" "MyNamespace.Common/"
WORKDIR "/source/MyNamespace.MyApi"
RUN dotnet publish -o /app
# Print the content of the /home/site/wwwroot directory
RUN ls -l /app
# final stage/image
FROM mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0
ENV AzureWebJobsScriptRoot=/app \
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
COPY --from=installer-env ["/app", "/app"]
# Set the entry point for the Azure Functions host
ENTRYPOINT ["./app/MyNamespace.MyApi"] # the container runs without this Entrypoint command, but the function is not found
Мой файл program.cs функции Azure "MyApi" выглядит следующим образом:
Код: Выделить всё
var host = new HostBuilder()
.ConfigureFunctionsWebApplication() // error happens on this line
...
.Build();
host.Run();
Мои команды Docker в PowerShell:
Сборка:
Код: Выделить всё
docker build -t myUrl.io/crm/crm-myapi-image -f Dockerfile.MyApi .
Код: Выделить всё
docker run -d -p 8080:80 --name crm-myapi-container myUrl.io/crm/crm-myapi-image
Подробнее здесь: https://stackoverflow.com/questions/787 ... uld-not-be