Von meiner Ubuntu-VM aus konnte ich rubygems.org anpingen. Ich weiß nicht, ob es eine Möglichkeit gibt zu prüfen, ob der Docker-Container das kann. Ich habe vermutlich nur die HTTP-Version angepingt, nicht HTTPS. Ich erwähne das, falls das Problem damit zusammenhängt. (Eine der Seiten, die ich bei einer Google-Suche gefunden habe, schlug vor, HTTPS durch HTTP zu ersetzen, aber das kann ich nicht machen, da das definierte Verhalten irgendwo im Docker-Container festgelegt ist.)
Ich habe die macOS-Optionen ausprobiert.
Zuerst habe ich Option 2 (Homebrew) verwendet, bin dabei aber auf Probleme gestoßen, da nicht alle Abhängigkeiten mit dem Befehl aus dieser Anleitung installiert wurden. https://medium.com/@yutafujii_59175/a-complete-one-by-one-guide-to-install-docker-on-your-mac-os-using-homebrew-e818eb4cfc3 hat mir geholfen, ein Stück weiterzukommen.
Jetzt stecke ich bei Schritt 2 d/boot_dev --init fest:
Migrating database...
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
/src/lib/site_settings/db_provider.rb:61:in `table_exists?'
/src/lib/site_settings/db_provider.rb:16:in `all'
/src/lib/site_settings/defaults_provider.rb:29:in `db_all'
/src/lib/site_setting_extension.rb:277:in `block in refresh!'
/src/lib/site_setting_extension.rb:274:in `synchronize'
/src/lib/site_setting_extension.rb:274:in `refresh!'
/src/lib/site_setting_extension.rb:495:in `block in setup_methods'
/src/config/initializers/004-message_bus.rb:120:in `<main>'
/src/config/environment.rb:7:in `<main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
Anschließend habe ich die .dmg-Datei heruntergeladen, aber da ich neu bei Docker bin, weiß ich nicht, was ich danach tun soll. Es wäre toll, wenn es eine etwas detailliertere Beschreibung der macOS-Option gäbe.
Danke.
Unter macOS: Sobald Sie Docker aus der .dmg-Datei installiert haben, stellen Sie sicher, dass es läuft – in der macOS-Toolbar sollte ein Symbol erscheinen, mit dem Sie den Status überprüfen können. Folgen Sie dann einfach den Schritten aus dem ersten Beitrag (klonen usw.). Wenn Sie dabei auf Probleme stoßen, posten Sie hier.
Achten Sie darauf: Falls Sie Docker zuvor mit Homebrew installiert haben, ist es ratsam, diese Version zuerst zu deinstallieren oder zumindest sicherzustellen, dass sie nicht läuft. Ich habe Docker nie mit Homebrew installiert, daher kann ich dazu keine spezifischen Ratschläge geben.
Danke.
Ich habe das Symbol verwendet und das Docker-Dashboard geöffnet. Dort habe ich keine laufenden Container gefunden, obwohl ich über die Befehlszeile mehrere laufende Container sehen konnte. Ich frage mich, ob ich mich anmelden muss, um das Docker-Dashboard zu verwenden? Oder tritt dieses Verhalten auf, weil mehrere Docker-Versionen installiert sind (Homebrew und Desktop (.dmg))?
In der Zwischenzeit habe ich es geschafft, Discourse auf DigitalOcean einzurichten. Das funktioniert problemlos und reicht für meine Zwecke aus.
Die DMG-Datei installiert Docker, nicht Discourse. Es werden zunächst keine Container hinzugefügt.
Von dort aus können Sie den Docker-Leitfaden befolgen.
Beim Ausführen des obigen Befehls (auf einem Mac) erhalte ich diesen Fehler:
Ein Fehler ist bei der Installation von cppjieba_rb (0.3.3) aufgetreten, und Bundler kann nicht fortfahren.
Stellen Sie sicher, dass `gem install cppjieba_rb -v '0.3.3' --source 'https://rubygems.org/'` erfolgreich ausgeführt wird,
bevor Sie bundeln.
Haben Sie irgendwelche Vorschläge? Ich verstehe nicht genau, was das Problem ist. Die separate gem-Installation funktioniert ebenfalls nicht (auch nicht mit sudo).
Außerdem: Warum müssen Gems installiert werden, wenn ich ein Docker-Image ausführe? Das sollte doch bereits vollständig vorinstalliert sein, oder?
UPDATE: BEHEBT
Ich habe in
~/repos/discoursegeklont, sollte aber in~/discoursegeklont haben. Jetzt funktioniert es einwandfrei.
Wenn du diesen Fehler beim Ausführen von d/unicorn erhältst:
Could not find aws-partitions-1.284.0 in any of the sources
Run `bundle install` to install missing gems.
kannst du dies beheben, indem du folgenden Befehl ausführst:
docker exec -it -u discourse:discourse discourse_dev /bin/bash -c "cd /src && USER=discourse RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 LD_PRELOAD=/usr/lib/libjemalloc.so RAILS_ENV=${RAILS_ENV:=development} bundle install"
Danach wird d/boot_dev erfolgreich ausgeführt.
Einfacher:
d/boot_dev
d/bundle install
Wir haben Hilfsprogramme für alle gängigen Aufgaben.
Im Originalbeitrag steht:
Der Docker-Entwicklungsprozess unterstützt Symlinks im Verzeichnis
plugins/
Worauf verlinken wir in diesem Kontext das Plugins-Verzeichnis? Danke!
cd plugins
ln -s /vollständiger/Pfad/zum/Ihrer/Plugin .
ln -s ~/src/my-great-plugin # zum Beispiel
Ah, danke, ich meinte nur, in diesem Kontext eine symbolische Verknüpfung zum plugins-Verzeichnis zu erstellen.
In der Regel verlinken Sie für diesen Workflow kein gesamtes Verzeichnis, da Sie normalerweise eine granulare Kontrolle darüber wünschen, welche Plugins während einer Ausführung im Geltungsbereich sind.
Hallo, ich verwende diesen Leitfaden und er funktioniert einwandfrei, aber meine Sorge ist, dass beim Ausführen von d/boot_dev immer wieder verschiedene Dinge heruntergeladen werden. Wie kann ich die erforderlichen Dateien nur einmal herunterladen und für den nächsten Start vorhalten? Mein Betriebssystem ist Ubuntu 20.04.
Versucht, auf einem frischen Mint 20-System zu installieren. Docker ist verfügbar:
terrapop@terrapop:/var$ docker version
Client: Docker Engine - Community
Version: 19.03.12
terrapop@terrapop:/var/discourse$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: active (running) since Mon 2020-08-24 19:03:48 CEST; 31min ago
Dann Discourse geklont:
sudo git clone GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub /var/discourse
cd /var/discourse
Allerdings führt d/boot_dev --init zu:
d/boot_dev --init
bash: d/boot_dev: Datei oder Verzeichnis nicht gefunden
Hat jemand eine Idee?
Update: Ich habe jetzt unsere SendGrid-API-Schlüssel zur app.yml hinzugefügt und die App über ./launcher gebootet. Sie läuft nun auf localhost. Könnte es sein, dass alle d/-Befehle im Originalbeitrag veraltet sind? Trotzdem verstehe ich es nicht. Die App läuft jetzt in Docker auf meinem Ubuntu (Mint)-Computer auf localhost, genau wie auf der Staging-Umgebung bei Digital Ocean. Wir möchten lokal entwickeln, wobei die App über Docker mit Symlinks für Plugins läuft, aber ich bin mir nicht sicher, ob sie jetzt so einsatzbereit ist, wie sie sein sollte, da ich die d/-Befehle in keiner Weise ausführen kann. Kann jemand bitte einen Beitrag leisten? Danke.
Update: Mein Fehler. Ich habe den Git-Link für die Produktion verwendet:
git clone GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub /var/discourse
Statt:
git clone GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub
![]()
Aber…
Jetzt habe ich neue Probleme. Ich kann unter Ubuntu Mint 20 (UID 0) nur als Superuser/root nach /var klonen. Wenn ich also klone und d/boot_dev --init ausführe, wird alles heruntergeladen und startet problemlos. Später wirft das Skript jedoch einen Permission-Fehler, da es erwartet, etwas mit UID 1000 auszuführen. Das ist der erste erstellte Benutzer auf Mint, also mein persönliches Konto (terrapop), und nicht root. Wie komme ich um dieses Problem herum?
Lösung: Einfacher als gedacht. Einfach ein neues www-Verzeichnis in var erstellen. Das www-Verzeichnis mit chown und chmod auf deinen ersten Benutzer auf Mint ändern und dann wie in den Beiträgen des Originalautors fortfahren. Funktioniert jetzt. Freut mich.
Aus irgendeinem Grund funktionierten die Symlinks zu meinen Plugin-Quellverzeichnissen nicht, und ich musste die Plugin-Quellverzeichnisse manuell in das Verzeichnis plugins verschieben bzw. kopieren, damit sie nach dem Neustart des Docker-Containers unter /admin/plugins angezeigt wurden.
Vielleicht hat sich etwas an der Art und Weise geändert, wie Docker Symlinks unterstützt? Ich verwende docker-ce 19.03.12 auf Ubuntu.
Ich habe das kürzlich auch mit Docker Desktop für Mac erlebt.
Ich habe dieselben Schritte auf einem $5 DO-Droplet durchgeführt. Alles verlief problemlos. Wie kann ich meine Site jetzt freischalten, damit ich darauf zugreifen kann?
P.S. Es funktioniert mit ngrok. Mit einem Nginx-Reverse-Proxy auf Port 9292 funktioniert es noch nicht.
Danke dafür. Sie können dies direkt auf dem Server tun und müssen keinen Nginx-Reverse-Proxy konfigurieren. Ich genieße das d/o Docker- und VSCode-Remote-Setup ![]()
Verwenden Sie d/unicorn -D, um Unicorn als Daemon zu starten, damit die Shell nach dem Starten des Servers weiterhin nutzbar bleibt.
Außerdem benötigen Sie mindestens einen $10 DO-Droplet.
Ich verwende einen Mac mit zsh (in iTerm2) und wenn ich versuche, symbolische Links für die Plugin-Entwicklung zu verwenden, stecke ich bei folgenden Fehlern fest:
readlink: illegale Option -- f
Verwendung: readlink [-n] [Datei ...]
Das liegt daran, dass die Mac-Implementierung des readlink-Befehls sich leicht von der GNU-Version unterscheidet.
Der einfachste Weg, dies zu lösen, ist folgender:
# brew install coreutils
# ln -s "$(which greadlink)" "$(dirname "$(which greadlink)")/readlink"
Dadurch haben Sie die Möglichkeit, eine kompatible Version von readlink zu verwenden.
Denken Sie bitte daran, dass der Wert von dirname "$(which greadlink)" in Ihrer PATH-Umgebungsvariable vor /usr/bin (wo sich normalerweise das originale readlink befindet) stehen muss. In meinem Fall sieht PATH so aus: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:..., und der symbolische Link zu greadlink befindet sich in /usr/local/bin.
Referenz: Fixing "readlink: illegal option -- f" error on a Mac
Um eine einzelne Plugin-Test-Suite auszuführen, gehen Sie wie folgt vor:
# d/rake "plugin:spec[PLUGIN_NAME]"