Sviluppo con Docker
Poiché Discourse viene eseguito in Docker, dovresti essere in grado di avviare Discourse direttamente dalla tua directory di origine utilizzando un container di sviluppo Discourse.
Vantaggi: Non è necessario installare alcuna dipendenza di sistema, nessuna configurazione richiesta per impostare rapidamente un ambiente di sviluppo.
Svantaggi: Sarà leggermente più lento rispetto all’ambiente di sviluppo nativo su Ubuntu e molto più lento rispetto a un’installazione nativa su MacOS.
Vedi anche Developing Discourse using a Dev Container
Passo 1: Installare 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
Puoi eseguire i comandi sopra riportati all’interno di WSL, ma devi avere tutti i file all’interno del filesystem di WSL. Ad esempio, funziona perfettamente se si trova in ~/discourse, ma fallisce se viene posizionato in /mnt/c/discourse.
MacOS
L’immagine Docker di sviluppo di Discourse è disponibile solo per architetture x86_64. I Mac M1 sono in grado di avviare l’immagine utilizzando l’emulazione dell’architettura, ma è improbabile che Discourse si avvii a causa della mancanza di supporto inotify in QEMU.
In alternativa, dovresti utilizzare Install Discourse on macOS for development
Opzione 1: Scarica un pacchetto .dmg dal Docker store
Opzione 2: brew install docker
Passo 2: Avviare il Container
Clona il repository di Discourse sul tuo dispositivo locale.
git clone https://github.com/discourse/discourse.git
cd discourse
(dalla radice della tua origine)
d/boot_dev --init
# attendi mentre:
# - le dipendenze vengono installate,
# - il database viene migrato e
# - viene creato un utente amministratore (dovrai interagire con questo)
# In un terminale:
d/rails s
# E in un terminale separato
d/dev --only ember
…poi apri un browser su http://localhost:3000 e _ecco fatto!: dovresti vedere Discourse.
Collegamenti Simbolici per i Plugin
Il flusso di sviluppo Docker supporta i collegamenti simbolici nella directory plugins/, con la seguente avvertenza:
Ogni volta che viene creato un nuovo collegamento simbolico per un plugin, il container Docker deve essere riavviato con:
d/shutdown_dev; d/boot_dev
Note:
-
Per testare le email, esegui MailHog :
d/mailhog -
Se mancano delle gem, esegui:
d/bundle install -
Se è necessaria una migrazione del db:
d/rake db:migrate RAILS_ENV=development -
Quando hai finito, puoi scegliere di terminare il container Docker con:
d/shutdown_dev -
I dati vengono mantenuti tra le invocazioni del container nella directory
tmp/postgresdella tua radice di origine. Se per qualsiasi motivo desideri reimpostare il tuo database, esegui:sudo rm -fr data -
Se vedi errori come «permesso negato durante il tentativo di connessione a Docker», esegui:
run `sudo usermod -aG docker ${USER}` sudo service docker restart -
Se desideri esporre globalmente le porte dal container alla rete (disattivate di default), usa:
d/boot_dev -p -
Il Dockerfile proviene da discourse/discourse_docker su GitHub, in particolare image/discourse_dev.
Esecuzione dei Test
d/rake autospec
Per eseguire test specifici dei plugin, puoi anche fare qualcosa del genere:
d/rake plugin:spec["discourse-follow"]
O addirittura qualcosa di più specifico:
my-machine:~/discourse$ d/shell
discourse@discourse:/src$ RAILS_ENV=test /src/bin/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
Questo documento è sotto controllo versione: suggerisci modifiche su github.