Desenvolvendo com Docker
Como o Discourse roda em Docker, você deve ser capaz de executar o Discourse diretamente do seu diretório de origem usando um contêiner de desenvolvimento do Discourse.
Vantagens: Não é necessário instalar nenhuma dependência do sistema, nenhuma configuração é necessária para configurar rapidamente um ambiente de desenvolvimento.
Desvantagens: Será ligeiramente mais lento que o ambiente de desenvolvimento nativo no Ubuntu e muito mais lento que uma instalação nativa no MacOS.
Veja também Developing Discourse using a Dev Container
Passo 1: Instalar Docker
Ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
19.10
sudo apt-get install docker.io
sudo usermod -a -G docker $USER
sudo reboot
Windows WSL: Ubuntu
Você pode executar os comandos acima dentro do WSL, mas você deve ter todos os arquivos dentro do sistema de arquivos do WSL. Por exemplo, funciona perfeitamente se estiver dentro de ~/discourse, mas falha se estiver em /mnt/c/discourse.
MacOS
A imagem de desenvolvimento do Docker do Discourse está disponível apenas para arquiteturas x86_64. Macs M1 são capazes de iniciar a imagem usando emulação de arquitetura, mas é improvável que o Discourse inicie devido à falta de suporte a inotify no QEMU.
Em vez disso, você deve usar Install Discourse on macOS for development
Opção 1: Baixe um pacote .dmg da Docker store
Opção 2: brew install docker
Passo 2: Iniciar o Contêiner
Clone o repositório do Discourse para seu dispositivo local.
git clone https://github.com/discourse/discourse.git
cd discourse
(a partir da raiz da sua origem)
d/boot_dev --init
# aguarde enquanto:
# - as dependências são instaladas,
# - o banco de dados é migrado e
# - um usuário administrador é criado (você precisará interagir com isso)
# Em um terminal:
d/rails s
# E em um terminal separado
d/dev --only ember
…então abra um navegador em http://localhost:3000 e pronto!, você deverá ver o Discourse.
Links Simbólicos de Plugins
O fluxo de desenvolvimento do Docker suporta links simbólicos no diretório plugins/, com a seguinte ressalva:
Sempre que um novo link simbólico de plugin for criado, o contêiner Docker deve ser reiniciado com:
d/shutdown_dev; d/boot_dev
Notas:
-
Para testar e-mails, execute o MailHog :
d/mailhog -
Se houver gems faltando, execute:
d/bundle install -
Se for necessária uma migração de banco de dados:
d/rake db:migrate RAILS_ENV=development -
Quando terminar, você pode optar por encerrar o contêiner Docker com:
d/shutdown_dev -
Os dados são persistidos entre as invocações do contêiner no diretório
tmp/postgresda raiz da sua origem. Se por qualquer motivo você quiser redefinir seu banco de dados, execute:sudo rm -fr data -
Se você vir erros como „permissão negada ao tentar conectar ao Docker”, execute:
run `sudo usermod -aG docker ${USER}` sudo service docker restart -
Se desejar expor globalmente as portas do contêiner para a rede (padrão desativado), use:
d/boot_dev -p -
O Dockerfile vem do discourse/discourse_docker no GitHub, em particular image/discourse_dev.
Executando Testes
d/rake autospec
Para executar testes específicos de plugins, você também pode fazer algo assim:
d/rake plugin:spec["discourse-follow"]
Ou até mesmo algo assim para ser ainda mais específico:
my-machine:~/discourse$ d/shell
discourse@discourse:/src$ RAILS_ENV=test /src/bin/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
Este documento está sob controle de versão - sugira alterações no GitHub.