Confuso sobre a instalação do docker

Estava olhando as imagens Docker disponíveis para o Discourse hoje e tenho algumas perguntas:

  1. Em ambas as imagens, vi que elas listam a instalação do Discourse (obviamente). Em seguida, há uma lista de etapas para colocar tudo no ar, principalmente configuração de nome de domínio e e-mail.

Estou confuso quanto ao banco de dados. Não há nenhuma etapa para configurá-lo. O banco de dados Postgres (ou outro) está incluído na mesma imagem? O Redis também está? Ou isso é totalmente opcional?

Na lista de coisas que a imagem Docker terá, o banco de dados não é mencionado.

Uso Docker no trabalho para desenvolvimento, staging e produção. Nossos containers são imutáveis. Quando precisamos fazer uma atualização para lançar uma nova imagem, ela busca o código mais recente do Git e segue em frente.

Nunca fazemos alterações dentro do container, ou pelo menos nenhuma que esperamos que dure mais do que até o próximo deploy.

Quando queremos atualizar para uma versão mais recente do .NET, por exemplo, basta modificar a imagem base e lançá-la.

Ao ler sobre a imagem Docker do Discourse, parecia que alterações eram feitas no conteúdo da imagem, como se fosse uma instalação comum. As alterações feitas na imagem eram destinadas a serem persistidas. É isso mesmo?

Quando li pela primeira vez, pensei que significava que tudo era armazenado no banco de dados. Mas então o banco de dados está dentro do container? Então as alterações no banco de dados também são persistidas?

Se for esse o caso, como posso garantir que todas as alterações sejam salvas se desligar o container para parar e depois reiniciá-lo?

Segundo, e muito mais importante: como isso impacta a atualização para uma nova versão do software do fórum?

Parecia, pelo que li, que as instâncias dentro do container são usadas para realizar atualizações em si mesmas. Eu esperava que uma nova imagem com as atualizações fosse lançada e tudo funcionasse bem.

Acho que, principalmente, estou acostumado a tratar as imagens Docker como gado: elas morrem, são substituídas, e nenhuma alteração na imagem é jamais persistida.

Eu não sabia que existiam imagens Docker que persistem alterações que duram mais do que o próximo reinício.

Olá @talkingBeat

O banco de dados está montado em um volume fora do contêiner Docker; portanto, ele é persistente.

Espero que isso ajude.

Isso faz sentido.
Se o Discourse lançar uma nova versão e eu substituir o arquivo docker por um novo e executá-lo, o banco de dados ainda estará lá?

E quanto às personalizações que alteraram arquivos ou adicionaram/removeram arquivos?

Olá @RockHopper e bem-vindo de volta!

O script de inicialização do Discourse faz tudo isso por você; o que é totalmente suportado pela equipe do meta aqui.

Espero que isso ajude.