Eh… ![]()
O script nem sequer precisa de acesso a /var/discourse (por que ele tem?).
Todo o problema decorre de algumas coisas:
- enorme mal-entendido sobre o que é docker, como funciona e o que ele possibilita
- colagem da noção de que docker = docker-compose (não é!)
Você pode ter uma configuração completamente contida que virtualmente não toca no ambiente do host…
Após muita pesquisa, parece que todo o script de “configuração” foi criado para tornar a instalação o mais simples possível para a pessoa muito não técnica. Ele verifica, guia o usuário e configura tudo. Isso pode ser algo bom, mas falha completamente em qualquer coisa que tente se desviar, mesmo que minimamente, do caminho previsto.
Na configuração mais básica, você pode nem precisar de acesso a nenhum diretório do host - tudo ficará contido dentro de um ambiente limitado (a imagem será usada para criar o contêiner e todo o armazenamento necessário seria tratado via volumes docker [isso tem problemas quando você quer migrar para outro lugar ou acessar os arquivos, mas estamos falando do básico]).
Ele também tenta garantir que o DNS esteja correto, tenta configurar certificados, proxy reverso, SMTP e o que mais - novamente, completamente bom fornecer essa configuração fácil.
MAS!
O problema NÃO é jogar isso fora, mas ALÉM DISSO fornecer uma imagem docker simples (ela já existe, é usada pelos scripts e modelos usados pelo script! discourse_docker/templates/postgres.template.yml at main · discourse/discourse_docker · GitHub & discourse_docker/launcher at main · discourse/discourse_docker · GitHub) com
- versionamento adequado: você marca a imagem com a versão lançada do discourse (3.4.5 ou o que for)
- documentação sensata e simples das variáveis de ambiente esperadas (controlando a conectividade do banco de dados/redis/etc.) e possíveis caminhos/volumes que podem ser montados no host.
Apenas isso…
Dê uma olhada no guia miniflux mencionado anteriormente: Miniflux Installation with Docker - ele fornece detalhes sobre a imagem (e quais repositórios as servem) e as variáveis de ambiente possíveis para configurá-la.
Ou a imagem docker do MySQL: https://hub.docker.com/_/mysql - a mesma coisa - um guia que explica o que é possível configurar (veja especialmente a seção: “Variáveis de Ambiente”).
Ninguém diz: “você tem que usar o launcher do mysql para construir a imagem do mysql para que você possa usá-la”, ou redis para isso - neste caso, você simplesmente usa imagens existentes e essa é a pista e o cerne do uso do docker. No entanto, no caso do discourse, de repente essa é uma solução “ruim” e todos gritam: “você tem que construir sua própria imagem!” – por quê!?