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 : Aucun 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 sur Ubuntu, et beaucoup plus lent qu’une installation native sur 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 à l’intérieur du système de fichiers WSL. Par exemple, cela fonctionne très bien si c’est à l’intérieur de ~/discourse mais cela échoue si c’est placé à l’intérieur de /mnt/c/discourse.
MacOS
L’image docker de développement Discourse n’est disponible que pour les architectures x86_64. Les Mac 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 administrateur 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 des Plugins
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 comme “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 plugins 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.