Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Com .NET.NET Aspire, é possível especificar um Dockerfile para construir quando o host do aplicativo é iniciado, usando os métodos de extensão AddDockerfile ou WithDockerfile.
No exemplo a seguir, o método de extensão AddDockerfile é usado para especificar um contêiner fazendo referência ao caminho de contexto para o build do contêiner.
var builder = DistributedApplication.CreateBuilder(args);
var container = builder.AddDockerfile(
"mycontainer", "relative/context/path");
A menos que o argumento de caminho de contexto seja um caminho enraizado, o caminho de contexto será interpretado como sendo relativo ao diretório de projetos do host do aplicativo (em que a pasta *.csproj
AppHost está localizada).
Por padrão, o nome do Dockerfile que é usado é Dockerfile
e deve estar dentro do diretório de caminho de contexto. É possível especificar explicitamente o nome do Dockerfile como um caminho absoluto ou um caminho relativo para o caminho de contexto.
Isso será útil se você quiser modificar o Dockerfile específico que está sendo usado ao executar localmente ou quando o host do aplicativo está em processo de implantação.
var builder = DistributedApplication.CreateBuilder(args);
var container = builder.ExecutionContext.IsRunMode
? builder.AddDockerfile(
"mycontainer", "relative/context/path", "Dockerfile.debug")
: builder.AddDockerfile(
"mycontainer", "relative/context/path", "Dockerfile.release");
Ao usar AddDockerfile o valor retornado é um IResourceBuilder<ContainerResource>
.
.NET
.NET Aspire inclui muitos tipos de recursos personalizados derivados de ContainerResource.
Usando o método de extensão WithDockerfile é possível continuar usando esses tipos de recursos fortemente tipados e personalizar o contêiner subjacente que é usado.
var builder = DistributedApplication.CreateBuilder(args);
var pgsql = builder.AddPostgres("pgsql")
.WithDockerfile("path/to/context")
.WithPgAdmin();
O método WithBuildArg pode ser usado para passar argumentos para a construção de imagem de contêiner.
var builder = DistributedApplication.CreateBuilder(args);
var container = builder.AddDockerfile("mygoapp", "relative/context/path")
.WithBuildArg("GO_VERSION", "1.22");
O parâmetro de valor no método WithBuildArg pode ser um valor literal (boolean
, string
, int
) ou pode ser um construtor de recursos para um recurso de parâmetro . O código a seguir substitui o GO_VERSION
por um valor de parâmetro que pode ser especificado no momento da implantação.
var builder = DistributedApplication.CreateBuilder(args);
var goVersion = builder.AddParameter("goversion");
var container = builder.AddDockerfile("mygoapp", "relative/context/path")
.WithBuildArg("GO_VERSION", goVersion);
Os argumentos de build correspondem ao comando ARG
nos Dockerfiles do . Expandindo o exemplo anterior, este é um Dockerfile de vários estágios que especifica uma versão de imagem de contêiner específica a ser usada como parâmetro.
# Stage 1: Build the Go program
ARG GO_VERSION=1.22
FROM golang:${GO_VERSION} AS builder
WORKDIR /build
COPY . .
RUN go build mygoapp.go
# Stage 2: Run the Go program
FROM mcr.microsoft.com/cbl-mariner/base/core:2.0
WORKDIR /app
COPY --from=builder /build/mygoapp .
CMD ["./mygoapp"]
Observação
Em vez de codificar valores na imagem de contêiner, é recomendável usar variáveis de ambiente para valores que mudam com frequência. Isso evita a necessidade de recompilar a imagem de contêiner sempre que uma alteração for necessária.
Além de criar argumentos, é possível especificar segredos de compilação usando WithBuildSecret que são disponibilizados seletivamente para comandos individuais no Dockerfile com a sintaxe --mount=type=secret
nos comandos RUN
.
var builder = DistributedApplication.CreateBuilder(args);
var accessToken = builder.AddParameter("accesstoken", secret: true);
var container = builder.AddDockerfile("myapp", "relative/context/path")
.WithBuildSecret("ACCESS_TOKEN", accessToken);
Por exemplo, considere o comando RUN
em um Dockerfile que expõe o segredo especificado ao comando específico:
# The helloworld command can read the secret from /run/secrets/ACCESS_TOKEN
RUN --mount=type=secret,id=ACCESS_TOKEN helloworld
Cuidado
Cuidado deve ser exercido ao passar segredos em ambientes de build. Isso geralmente é feito ao usar um token para recuperar dependências de repositórios ou feeds privados antes de um build. É importante garantir que os segredos injetados não sejam copiados nas imagens finais ou intermediárias.
Comentários do .NET Aspire
O .NET Aspire é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Módulo
Criar um aplicativo Web em contêineres com o Docker - Training
Use o Docker para criar, armazenar e gerenciar imagens de contêiner privado com o Registro de Contêiner do Azure.