Sign inSign up

lzocateli/dotnet-aspnet

By lzocateli

•Updated about 1 month ago

Image
0

409

lzocateli/dotnet-aspnet repository overview

⁠ASP.NET Core 10 Runtime

Docker Hub Version Base Platforms Repository code license Build

Imagem base do ASP.NET Core 10 em Ubuntu 24.04 para executar aplicações framework-dependent em ambientes produtivos. Mantém a compatibilidade da variante Noble oficial, inicia como usuário não root e não inclui o SDK nem ferramentas adicionais.

⁠Referência da imagem

ItemValor
Imagemlzocateli/dotnet-aspnet:10.0.11-noble
Imagem baseDigest do manifest multi-arquitetura de mcr.microsoft.com/dotnet/aspnet:10.0-noble
Plataformaslinux/amd64, linux/arm64
Usuário padrão1654:1654 (APP_UID da imagem oficial)
Entry pointdotnet
Comando padrão--info
Diretório de trabalho/app
Porta8080/tcp
Código-fontehttps://github.com/lzocateli/containers/tree/main/dotnet-aspnet
Documentaçãohttps://github.com/lzocateli/containers/tree/main/dotnet-aspnet

⁠Conteúdo e finalidade

⁠Incluído
  • Microsoft.AspNetCore.App 10.0.11;
  • Microsoft.NETCore.App 10.0.11;
  • bibliotecas do Ubuntu Noble presentes na imagem oficial;
  • diretório /app gravável pelo usuário não root.
⁠Não incluído
  • .NET SDK, compiladores ou ferramentas de build;
  • aplicação, migrations ou scripts de bootstrap;
  • shell administrativo adicional, clientes de banco ou ferramentas de diagnóstico;
  • certificados privados, credenciais ou configuração de ambiente;
  • health check genérico, pois a rota de saúde pertence à aplicação derivada.

⁠Início rápido

docker pull lzocateli/dotnet-aspnet:10.0.11-noble
docker run --rm lzocateli/dotnet-aspnet:10.0.11-noble

Para executar uma aplicação publicada em ./out:

docker run --rm \
  --publish 127.0.0.1:8080:8080 \
  --volume "$PWD/out:/app:ro" \
  lzocateli/dotnet-aspnet:10.0.11-noble \
  Aplicacao.dll

⁠Imagem de aplicação

Use esta imagem como estágio final e copie somente os artefatos publicados:

# syntax=docker/dockerfile:1
FROM lzocateli/dotnet-sdk:10.0.400-noble AS build
WORKDIR /workspace
COPY --chown=1654:1654 . .
RUN --mount=type=cache,target=/home/app/.nuget/packages,uid=1654,gid=1654 \
    dotnet publish --configuration Release --output /out

FROM lzocateli/dotnet-aspnet:10.0.11-noble AS runtime
COPY --from=build --chown=1654:1654 /out .
CMD ["Aplicacao.dll"]

O entrypoint já é dotnet; por isso a imagem derivada informa somente a DLL em CMD.

⁠Docker Compose

services:
  app:
    image: exemplo/aplicacao:1.0.0
    restart: unless-stopped
    read_only: true
    init: true
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      ASPNETCORE_HTTP_PORTS: "8080"
      DOTNET_EnableDiagnostics: "0"
    tmpfs:
      - /tmp:rw,noexec,nosuid,size=64m
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

⁠Configuração

⁠Variáveis de ambiente
VariávelObrigatóriaSecretaPadrãoDescrição
ASPNETCORE_HTTP_PORTSNãoNão8080Portas HTTP usadas pelo Kestrel quando a aplicação não as sobrescreve.
ASPNETCORE_ENVIRONMENTNãoNãoProduction quando ausenteAmbiente lógico da aplicação. Não armazene secrets nesta variável.
DOTNET_EnableDiagnosticsNãoNãohabilitado pelo runtimeUse 0 quando diagnósticos externos não forem necessários.

Outras variáveis DOTNET_* e ASPNETCORE_* seguem a documentação oficial. Strings de conexão, tokens e chaves devem ser fornecidos por secrets do orquestrador ou arquivos montados, nunca incorporados à imagem.

⁠Portas, persistência e mounts
ItemContrato
8080/tcpHTTP interno; publique somente via proxy ou rede necessária.
/appArtefatos imutáveis da aplicação; prefira conteúdo copiado na imagem ou mount somente leitura.
/tmpTemporários de runtime; use tmpfs quando o filesystem for somente leitura.

A imagem não declara VOLUME e não mantém dados persistentes. Dados de negócio, Data Protection keys e uploads exigem armazenamento externo ou mount explicitamente projetado pela aplicação.

⁠Inicialização e ciclo de vida

O processo dotnet é o PID 1 e recebe diretamente SIGTERM. A aplicação deve encerrar dentro do período de tolerância do orquestrador. Migrations devem ocorrer em job controlado e idempotente, não implicitamente em todas as réplicas.

Defina o health check na imagem da aplicação ou no orquestrador usando uma rota que verifique a prontidão real. Esta base não instala curl e não presume endpoint, protocolo ou dependências.

⁠Segurança

  • executa por padrão como UID/GID 1654:1654;
  • não requer root, modo privilegiado ou capacidades Linux adicionais;
  • suporta read_only, no-new-privileges e remoção de todas as capabilities quando a aplicação não exigir escrita fora de /tmp;
  • não contém SDK nem pacotes adicionais além da base oficial;
  • a base é fixada por digest e deve ser atualizada para receber correções upstream;
  • publique TLS no proxy/ingress e não inclua chaves privadas na imagem.

⁠Build local

docker build --pull --tag lzocateli/dotnet-aspnet:10.0.11-noble dotnet-aspnet

Para múltiplas plataformas:

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --tag lzocateli/dotnet-aspnet:10.0.11-noble \
  dotnet-aspnet

⁠Tags e compatibilidade

TagMutabilidadeCompatibilidadeUso recomendado
10.0.11-nobleImutávelASP.NET Core 10.0.11 em Ubuntu 24.04Runtime produtivo framework-dependent

Não há política para latest. Uma atualização do runtime, da base ou do contrato exige nova tag imutável, rebuild da aplicação e validação antes do rollout.

⁠Validação

Antes da publicação, execute:

docker buildx build --check --file dotnet-aspnet/Dockerfile dotnet-aspnet
docker build --pull --tag lzocateli/dotnet-aspnet:10.0.11-noble dotnet-aspnet
docker run --rm lzocateli/dotnet-aspnet:10.0.11-noble
docker inspect lzocateli/dotnet-aspnet:10.0.11-noble

Além do smoke test da base, construa uma aplicação mínima com o SDK correspondente e valide HTTP, sinais, execução não root e filesystem somente leitura. Na release, execute scan de vulnerabilidades e confira SBOM, proveniência, labels e manifests das plataformas.

⁠Publicação

Use Actions > Publicar imagem de container > Run workflow com:

  • context_path: dotnet-aspnet;
  • image_name: dotnet-aspnet;
  • image_tag: 10.0.11-noble;
  • dockerfile: Dockerfile;
  • platforms: linux/amd64,linux/arm64.

O workflow publica no Docker Hub com SBOM e proveniência e pode sincronizar este README. A publicação não ocorre durante o build local.

⁠Operação e troubleshooting

Atualize reconstruindo a aplicação sobre uma nova tag imutável; faça rollout gradual e mantenha a imagem anterior para rollback. Logs devem ir para stdout/stderr. CPU, memória, réplicas, probes e limites são definidos pela aplicação e pelo orquestrador.

SintomaCausa provávelVerificaçãoCorreção
The application ... does not existDLL incorreta ou ausente em /appinspecione os artefatos do estágio de publishajuste COPY e CMD da imagem derivada
falha ao gravar arquivofilesystem somente leitura ou UID sem permissãoverifique o caminho e o UID 1654use /tmp ou mount dedicado com propriedade correta
aplicação não responde em 8080aplicação sobrescreveu a URL/portarevise ASPNETCORE_HTTP_PORTS e logsalinhe a porta da aplicação, imagem e orquestrador

⁠Limitações conhecidas

  • A imagem é uma base de runtime; não é um serviço útil sem uma aplicação ASP.NET Core publicada.
  • Não inclui utilitários para health check. Use probes nativas do orquestrador ou adicione uma ferramenta mínima na imagem derivada quando indispensável.
  • A variante Ubuntu Noble prioriza compatibilidade e é maior que variantes chiseled.
  • Em 2026-07-28, o Docker Scout não detectou vulnerabilidades nos 143 pacotes indexados da imagem local; repita o scan sobre o digest publicado antes do rollout.

⁠Licenças e fontes

ComponenteVersãoLicençaFonte
Conteúdo original deste repositórioAtualMIThttps://github.com/lzocateli/containers
Imagem oficial ASP.NET Core10.0.11 / Ubuntu NobleMIT e licenças dos componentes distribuídoshttps://github.com/dotnet/dotnet-docker
Ubuntu24.04 NobleLicenças próprias dos pacotes distribuídoshttps://packages.ubuntu.com/noble/

O badge MIT descreve somente o conteúdo original deste repositório. A imagem inclui componentes de terceiros que permanecem sujeitos aos termos e avisos de suas fontes. Consulte a política de licenciamento⁠, preserve as atribuições upstream e verifique também os avisos distribuídos dentro da imagem.

⁠Histórico de alterações

  • 10.0.11-noble: atualização para ASP.NET Core 10.0.11 com imagem base oficial fixada por digest.
  • 10.0.10-noble: migração para ASP.NET Core 10, execução não root, porta 8080 e metadados OCI.

Tag summary

Content type

Image

Digest

sha256:961ba80da…

Size

91.4 MB

Last updated

about 1 month ago

docker pull lzocateli/dotnet-aspnet:10.0.11-noble