Existe uma maneira de instalar o Discourse sem os scripts fornecidos?

Olá a todos,

Estou aqui novamente para pedir algo estranho :sparkles:

Ainda estou investigando como instalar o Discourse para minha Comunidade Interna. No passado, perguntei sobre como instalar o Discourse com um Redis externo e um Postgres externo, e como gerenciar tudo em um cluster Kubernetes. Você pode encontrar os detalhes aqui.

Agora tenho outra dúvida, pois me disseram que também preciso criar minha própria imagem de container para usar com o Helm ao fazer o deploy. Por causa disso, não conseguirei realizar a instalação com a documentação oficial, usando os scripts fornecidos no guia de instalação na nuvem. :cold_sweat:

Tentei construir minha própria imagem usando o comando bootstrap, mas não consigo iniciar a imagem do Docker sozinho, pois ela procura pelos templates Ruby e retorna um erro.

É possível iniciar a imagem do container sem usar os scripts fornecidos? Acredito que preciso de um pouco de ajuda, pois tentei examinar o script bash, mas parece um pouco avançado demais para mim. Torço para que alguém já tenha passado por uma situação assim e possa me dar algum conselho.

Obrigado novamente por tudo :revolving_hearts:

Para dar mais contexto e detalhes:
Usei o script do launcher com o comando bootstrap para criar minha própria imagem com minhas configurações.
Em seguida, a documentação diz que você precisa executar o launcher com o comando run para criar o container a partir da imagem.
Ao inspecionar o código do script, descobri que a instrução do docker é esta:

$docker_path run --shm-size=512m $links $attach_on_run $restart_policy "${env[@]}" "${labels[@]}" -h "$hostname" \
        -e DOCKER_HOST_IP="$docker_ip" --name $config -t "${ports[@]}" $volumes $mac_address $user_args \
        $run_image $boot_command

Mas não consigo traduzir todas as variáveis para um comando que eu pudesse executar sozinho sem o script. Ou talvez todo esse caminho que estou tentando esteja errado desde o início, mas quis tentar antes de perguntar, para testar se conseguia resolver isso sem incomodar ninguém.

Quando tento executar a imagem do docker sozinho, o container sai e, ao analisar os logs, vejo isso:

Already up to date.
INFO -- : Loading --stdin
/pups/lib/pups/config.rb:23:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
	from /pups/lib/pups/cli.rb:27:in `new'
	from /pups/lib/pups/cli.rb:27:in `run'
	from /pups/bin/pups:8:in `<main>'

Tente executar ./launcher start-cmd app

3 curtidas

Obrigado, isso foi muito útil :sparkling_heart:

Esse comando estava na documentação? Se sim, desculpe por perguntar, não o vi.

Muito obrigado por sempre me ajudar :sparkles:

2 curtidas

O Discourse depende do PostgreSQL rodando em um volume compartilhado; e muitos outros arquivos importantes estão nesse volume compartilhado (imagens, arquivos enviados, backups, logs, entre outros).

Se você mantiver a integridade do sistema de arquivos do volume /shared, de acordo com os padrões de configuração do Discourse, poderá iniciar e parar uma imagem Docker do Discourse e o aplicativo do contêiner com facilidade. No entanto, não é possível construir o aplicativo (pelo que sei) sem os scripts do Discourse (a menos que você faça uma engenharia reversa completa dos scripts e escreva seu próprio script baseado nos scripts existentes, que funcionam perfeitamente e são suportados), pois os scripts são responsáveis por construir uma SPA EmberJS sofisticada (tecnologia do lado do cliente) sobre o Ruby on Rails (uma tecnologia do lado do servidor), sem mencionar o gerenciamento da configuração do aplicativo principal e de todos os plugins. Para ser honesto, é um aplicativo bastante sofisticado.

Sim, você pode iniciar um contêiner do Discourse ou criar um contêiner do Discourse a partir de uma imagem do Discourse sem qualquer script, se (e somente se) você já tiver construído uma imagem Docker do Discourse perfeitamente funcional que esteja em conformidade com os padrões de configuração do Discourse, incluindo os requisitos de armazenamento persistente para o banco de dados, imagens e uploads, backups, arquivos de log, etc. Há muitos arquivos importantes necessários para o Discourse no volume compartilhado; portanto, você não pode simplesmente “pegar uma imagem Docker do Discourse básica” e iniciá-la sem todos os pré-requisitos mencionados acima (e nem tudo foi mencionado acima!).

Espero que isso ajude.

Obrigado pela resposta, isso é muito útil :slight_smile: Ontem eu estava lendo sobre por que os scripts são necessários neste tópico e em alguns outros.

Obrigado novamente pela sua explicação mais detalhada, todas essas informações me ajudam a entender como criar meu próprio fluxo de trabalho para atender aos padrões necessários :slight_smile:

1 curtida

De nada.

Pode ser muito confuso para quem (1) não é desenvolvedor Ruby on Rails e (2) não é desenvolvedor EmberJS.

Basicamente, você está construindo uma aplicação Ruby on Rails em produção, contida em um container Docker (tecnologia do lado do servidor), que serve de base para uma aplicação SPA EmberJS de classe mundial (o aplicativo principal do usuário); e, além de tudo isso, você ganha um sistema completo de gerenciamento de configuração de código aberto para todo o código-fonte, mantido por uma equipe muito talentosa e experiente, com conhecimento em web, que vem programando nesse ambiente há muito tempo. Além disso, você também pode contar com hospedagem profissional e desenvolvimento personalizado, tudo dentro do ecossistema de negócios do Discourse.

Que legal, não é? :slight_smile:

2 curtidas

Acabei de encontrar isso. Você está dizendo que não posso rodar o aplicativo e o banco de dados em hosts fisicamente diferentes, sem compartilhar absolutamente nada?

Isso seria um bloqueio total no meu caso…

Não, não é esse o caso. Executar o Discourse com um banco de dados externo dedicado é um caso de uso suportado e documentado.

4 curtidas