Estou usando builder.AddPostgres().WithImage(...)
, mas a imagem tem esse comportamento de sair se eu não usar -it
ao fazerdocker run
é assim que a documentação diz para usar esta imagem:
docker run \
-it \
-v postgresml_data:/var/lib/postgresql \
-p 5433:5432 \
-p 8000:8000 \
ghcr.io/postgresml/postgresml:2.7.12 \
sudo -u postgresml psql -d postgresml
é assim que adiciono o postgres, mas o seed não funciona, o item é mostrado no painel como encerrado e no docker se eu pressionar o botão de reprodução ele simplesmente inicia e sai em menos de um minuto, que é a maneira correta de manter o contêiner em execução.
postgres = builder.AddPostgres("lcommerce-dependecy-postgres", port: 5432)
.WithImage("postgresml/postgresml")
.WithImageTag("2.9.3")
.WithImageRegistry("ghcr.io")
.WithHttpEndpoint(name: "endpoint-55432-5432",
port: 8000, targetPort: 8000, isProxied: true)
.WithContainerRuntimeArgs("-it", "--gpus=all");
Tentei manter o contêiner em execução usando, .WithContainerRuntimeArgs("-it", "--gpus=all")
mas continuo saindo. (por padrão, o net aspire adiciona usuário e senha do postgres. Já testei outra imagem pgvector/pgvector
e funciona bem, mas esta não sai por padrão)
ATUALIZAR
VOCÊ PODE USAR
.WithContainerRuntimeArgs("-i", "--gpus=all")
.WithArgs("sudo", "-u", "postgresml", "psql", "-d", "postgresml")
MAS O MELHOR É
(como a resposta sugere):
.WithContainerRuntimeArgs("--gpus=all")
.WithArgs( "sleep","infinity")
O CORRETO É
Crie uma imagem personalizada com a extensão e os módulos necessários e defina o servidor de banco de dados como o principal processo persistente em vez de usar uma solução alternativa (como a resposta mencionou)