Я новичок в Google App Engine и пытаюсь развернуть свой веб-сайт ASP.Net Core 3.1 Blazor в Google App Engine. Я использую пользовательскую сборку с Docker, потому что App Engine еще не поддерживает .Net Core 3.1:
App.yaml
runtime: custom
env: flex
Dockerfile # Создан Visual Studio
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.3-bionic AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1.201-bionic AS build
WORKDIR /src
COPY ["Blazor_SqLite_Publish/Blazor_SqLite_Publish.csproj", "Blazor_SqLite_Publish/"]
RUN dotnet restore "Blazor_SqLite_Publish/Blazor_SqLite_Publish.csproj"
COPY . .
WORKDIR "/src/Blazor_SqLite_Publish"
RUN dotnet build "Blazor_SqLite_Publish.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Blazor_SqLite_Publish.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Blazor_SqLite_Publish.dll"]
Веб-сайт успешно развернут и даже работает. Но я заметил, что экземпляр App Engine запускает мой образ докера на Ubuntu-16.04.6 LTS:
root@xxxxxxxxxxx:/app# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
Но я ожидаю Ubuntu-18.04 LTS.
Как изменить версию Ubuntu-16.04.6 LTS на Ubuntu-18.04 LTS?
1 ответ
Наконец я смог решить эту проблему. Спасибо, Бредди, что проверил мой Dockerfile.
Мой Dockerfile находился в папке решения, а не в проекте. В результате Visual Studio создавала временный Dockerfile каждый раз, когда я публиковал свой веб-сайт в GAE. Сгенерированный файл Dockerfile содержал изображение gcr.io/google-appengine/aspnetcore:3.1:
FROM gcr.io/google-appengine/aspnetcore:3.1
COPY . /app
WORKDIR /app
ENTRYPOINT ["dotnet", "Blazor_SqLite_Publish.dll"]
Вот почему мой образ докера был основан на Ubuntu-16.04 LTS.
Похожие вопросы
Новые вопросы
docker
По вопросам создания и запуска контейнеров Docker. ВОПРОСЫ ПО DOCKER ДОЛЖНЫ ОТНОСИТЬСЯ К РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. Подходящие темы включают Dockerfiles, Docker Compose и архитектуру. Как правило, если ваш вопрос о том, что происходит внутри контейнера, он, вероятно, здесь по теме; если это вне контейнера, это, вероятно, не по теме.