gpt4 book ai didi

c# - 如何在 Google Cloud 中使用 .Net Core 3.0 镜像?

转载 作者:行者123 更新时间:2023-12-02 03:23:52 26 4
gpt4 key购买 nike

我正在使用 Google Cloud 托管我的 .Net Core 2.2 应用程序,但我想将其更新到 3.0。我的 app.yaml 看起来像这样

service: api
runtime: aspnetcore
env: flex

我知道我可以在 runtime 部分指定 .Net Core 版本。但 Google Cloud Container Registry 没有 .Net Core 3.0。我查过了here .

那么我应该制作一个自定义容器吗?我对 docker 的经验为零。也许有一个随时可用的容器。

我在公共(public)容器注册表中没有找到任何更新 .Net Core 镜像的路线图。

@更新

解决方案

它正在工作!

我的dockerfile看起来像这样:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY MyProject.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish /app/MyProject.csproj -c Release -o ./out --nologo

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out/ .
EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
ENV ASPNETCORE_ENVIRONMENT=production
ENV TAPTAKE_SEED=false
ENTRYPOINT ["dotnet", "MyProject.dll"]

还有我的新 app.yaml

service: api
runtime: custom
env: flex
env_variables:
ASPNETCORE_ENVIRONMENT: "production"

# Note this manual scaling is only for development
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 4
disk_size_gb: 10

还有我的cloudbuild.yaml:

steps:

# Build
- name: 'gcr.io/cloud-builders/dotnet'
args: [ 'publish', '-c', 'Release' ]
dir: 'MyProject'

# Migrations
- name: 'gcr.io/cloud-builders/dotnet'
args: [ 'ef', 'database', 'update' , '--configuration', 'Production']
dir: 'MyProject'
env:
- 'ASPNETCORE_ENVIRONMENT=production'

# DEPLOY
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app','deploy','MyProject/bin/Release/netcoreapp3.1/publish/app.yaml', '--verbosity=debug']
timeout: '1200s'

最佳答案

由于您已经在使用灵活环境,一种可能的解决方案是将运行时设置为自定义,然后使用 Dockerfile 指定您想要的镜像,在本例中为 .Net Core 3.0。

举个例子,app.yaml 文件可以这样重写:

service: api
runtime: custom
env: flex

我们还可以在官方 docker docs 给出的示例之上编写 Dockerfile

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 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 mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

同样,这只是可能的解决方案之一。谷歌有an article that describes 4 ways you can deploy a .Net Core application 。诚然,它已有几年历史,但概念仍然适用。作为概述,您可以:

  • 使用 Cloud Tools for Visual Studio 扩展直接从 Visual Studio 进行部署
  • 使用“dotnetpublish”部署框架相关部署包
  • 使用自定义 Dockerfile 部署到 App Engine 灵活环境
  • 使用自定义 Dockerfile 部署到容器引擎

关于c# - 如何在 Google Cloud 中使用 .Net Core 3.0 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58505180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com