Como atualizar o software (por exemplo, PostgreSQL) em execução em um contêiner Docker?

8

Ao usar a imagem base do PostgreSQL Docker, você escolhe uma versão do PostgreSQL, gira um contêiner e está executando. Ótimo! Mas qual é a melhor / correta maneira de atualizar para uma versão mais recente do PostgreSQL no futuro?

Pascal Lindelauf
fonte

Respostas:

2

Depois de executar o PostgreSQL em um contêiner por mais de um ano, acho que os bancos de dados não são ótimos para contêineres exatamente por razões como essa. Os contêineres não se destinam a ser usados ​​como VMs e, portanto, todos os aspectos das ferramentas o combaterão se você tentar tratá-lo como uma VM que você administra. Os contêineres são como chroots glorificados - ambientes de isolamento e reproduzíveis para um aplicativo específico, e quanto menos configuração esse aplicativo exigir, melhor.

Tudo isso dito, se você insistir em executar o PostgreSQL em um contêiner, pelo menos deverá montar um volume de algum lugar para colocar os arquivos de dados, para poder destruir ou modificar com segurança a imagem do servidor de banco de dados (para coisas como o PostgreSQL Atualizações). Qualquer configuração que precise ser feita deve ser feita no Dockerfile, para que as atualizações também sejam tratadas editando o Dockerfile - se você estiver fazendo uma pequena atualização, por exemplo, poderá ser necessário alterar apenas a tag da FROMimagem no Dockerfile .

Ben Collins
fonte
0

Você só precisa especificar uma tag , que corresponde a uma versão do PostgreSQL em uma imagem. Você não deve atualizar o PostgreSQL manualmente dentro do container em execução, pois isso anula o propósito de usar a imagem base.

Em Dockerfile, usando a FROMinstrução :

FROM postgres:9.4

Na linha de comando, usando o runcomando :

$ sudo docker run [OPTIONS] postgres:9.4 [COMMAND] [ARG...]
scriptin
fonte
1
Eu posso estar enganado, mas acho que isso não atualizaria seus dados, então você pode ter problemas de compatibilidade. Por exemplo, se eu estiver executando o PSQL 9.3 e quiser atualizar para a 9.4, alterar a versão da imagem do Docker deixaria o binário 9.4 tentando fazer referência e usar dados estruturados de acordo com os formatos 9.3. Está faltando uma etapa de migração. Isso é o que a resposta de A Lee aborda
Nathan Wallace