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?
Não há uma solução fácil para isso no momento, mas a mais simples que encontrei é a pg_dump
versão antiga e carregue esse despejo na versão mais recente.
Há bastante discussão em https://github.com/docker-library/postgres/issues/37 sobre possíveis soluções para esse problema e uma prova de conceito para uma atualização baseada no docker em https: // github. com / tianon / docker-postgres-upgrade
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 FROM
imagem no Dockerfile .
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 FROM
instrução :
FROM postgres:9.4
Na linha de comando, usando o run
comando :
$ sudo docker run [OPTIONS] postgres:9.4 [COMMAND] [ARG...]