Développer avec Docker
Puisque Discourse s’exécute dans Docker, vous devriez être en mesure d’exécuter Discourse directement à partir de votre répertoire source en utilisant un conteneur de développement Discourse.
Avantages : Pas besoin d’installer de dépendances système, aucune configuration nécessaire pour configurer rapidement un environnement de développement.
Inconvénients : Sera légèrement plus lent que l’environnement de développement natif sous Ubuntu, et beaucoup plus lent qu’une installation native sous MacOS.
Voir aussi Developing Discourse using a Dev Container
Étape 1 : Installer 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
Vous pouvez exécuter les commandes ci-dessus dans WSL mais vous devez avoir tous les fichiers dans le système de fichiers WSL. Par exemple, cela fonctionne bien s’il se trouve dans ~/discourse mais échoue s’il est placé dans /mnt/c/discourse.
MacOS
L’image Docker de développement Discourse n’est disponible que pour les architectures x86_64. Les Macs M1 sont capables de démarrer l’image en utilisant l’émulation d’architecture, mais il est peu probable que Discourse démarre en raison du manque de support inotify dans QEMU.
Vous devriez plutôt utiliser Install Discourse on macOS for development
Option 1 : Télécharger un .dmg packagé depuis le Docker store
Option 2 : brew install docker
Étape 2 : Démarrer le Conteneur
Clonez le dépôt Discourse sur votre appareil local.
git clone https://github.com/discourse/discourse.git
cd discourse
(depuis la racine de votre source)
d/boot_dev --init
# attendez pendant que :
# - les dépendances sont installées,
# - la base de données est migrée, et
# - un utilisateur admin est créé (vous devrez interagir avec celui-ci)
# Dans un terminal :
d/rails s
# Et dans un terminal séparé
d/ember-cli
…puis ouvrez un navigateur sur http://localhost:4200 et voilà ! vous devriez voir Discourse.
Liens symboliques de Plugin
Le flux de développement Docker prend en charge les liens symboliques sous le répertoire plugins/, avec la mise en garde suivante :
Chaque fois qu’un nouveau lien symbolique de plugin est créé, le conteneur Docker doit être redémarré avec :
d/shutdown_dev; d/boot_dev
Notes :
-
Pour tester les e-mails, exécutez MailHog :
d/mailhog -
S’il manque des gems, exécutez :
d/bundle install -
Si une migration de base de données est nécessaire :
d/rake db:migrate RAILS_ENV=development -
Lorsque vous avez terminé, vous pouvez choisir de tuer le conteneur Docker avec :
d/shutdown_dev -
Les données sont persistantes entre les invocations du conteneur dans le répertoire
tmp/postgresde votre racine source. Si pour une raison quelconque vous souhaitez réinitialiser votre base de données, exécutez :sudo rm -fr data -
Si vous voyez des erreurs telles que « permission denied while trying to connect to Docker », exécutez :
run `sudo usermod -aG docker ${USER}` sudo service docker restart -
Si vous souhaitez exposer globalement les ports du conteneur au réseau (désactivé par défaut), utilisez :
d/boot_dev -p -
Le Dockerfile provient de discourse/discourse_docker sur GitHub, en particulier image/discourse_dev.
Exécution des Tests
d/rake autospec
Pour exécuter des tests de plugin spécifiques, vous pouvez également faire quelque chose comme ceci :
d/rake plugin:spec["discourse-follow"]
Ou même quelque chose comme ceci pour être encore plus spécifique :
my-machine:~/discourse$ d/shell
discourse@discourse:/src$ RAILS_ENV=test /src/bin/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
Ce document est contrôlé par version - suggérez des modifications sur github.