Ich habe immer noch Schwierigkeiten mit dem neuen „Pre-Bundling“-Prozess. Der Bootstrap-Vorgang schlägt auf meiner Testinstanz fehl, und ich weiß nicht warum. Beachten Sie, dass dies eine Einrichtung mit einer externen PostgreSQL-Datenbank ist. Die Container laufen hinter einem HAProxy als SSL-Beschleuniger. Ich bootstrappe hier nur den web_only-Container. Die aktuelle Build-Version (vor dem Bootstrap) ist 3.5.0.beta8-dev, Commits · discourse/discourse · GitHub
Dies ist die aktuell fehlerhafte YAML-Datei:
# WICHTIG: Setzen Sie ein GEHEIMES PASSWORT in Postgres für den Discourse-Benutzer
# TODO: Ändern Sie SOME_SECRET in dieser Vorlage
templates:
- "templates/web.template.yml"
## Kommentieren Sie die nächste Zeile aus, um den IPv6-Listener zu aktivieren
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.template.yml"
## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports soll dieser Container exponieren?
## Wenn Sie möchten, dass Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
- "80:80" # http
- "443:443" # https
# Verwenden Sie den 'links'-Schlüssel, um Container miteinander zu verknüpfen, also den Docker --link-Flag.
links:
- link:
name: redis
alias: data
# Zusätzliche Argumente für Docker?
# docker_args:
params:
## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_DEFAULT_LOCALE: de
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt vom Speicher und den CPU-Kernen ab.
## Wird automatisch vom Bootstrap basierend auf den erkannten CPUs festgelegt, oder Sie können es überschreiben
UNICORN_WORKERS: 4
## TODO: Der Domainname, auf den diese Discourse-Instanz antworten wird
DISCOURSE_HOSTNAME: 'forum2.netzwissen.de'
## Kommentieren Sie dies aus, wenn Sie möchten, dass der Container mit demselben
## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste der durch Kommas getrennten E-Mails, die bei der ersten Anmeldung zu Admin und Entwickler werden
## Beispiel 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'admin@netzwissen.de'
## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
# SMTP-Adresse, Benutzername und Passwort sind erforderlich
# WARNUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
DISCOURSE_SMTP_ADDRESS: mail.netzwissen.de
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: discourse@netzwissen.de
DISCOURSE_SMTP_PASSWORD: [xxxxxxxxxxxxxxxxx}
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (von einigen Anbietern erforderlich)
DISCOURSE_NOTIFICATION_EMAIL: discourse@netzwissen.de # (Adresse, von der Benachrichtigungen gesendet werden)
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## Konfigurieren Sie die Konnektivität zu den Datenbanken
DISCOURSE_DB_SOCKET: ''
DISCOURSE_DB_USERNAME: [xxxxxxxxxxx]
DISCOURSE_DB_NAME: [xxxxxxxxxxxxxxx]
DISCOURSE_DB_HOST: [xxxxxxxxxxxxxxx]
DISCOURSE_DB_PASSWORD: [xxxxxxxxxxxxxxx]
## Redis-Caching im benachbarten Container
DISCOURSE_REDIS_HOST: redis
## Die http- oder https-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
## siehe https://meta.discourse.org/t/14857 für Details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Die Maxmind-Geolocation-IP-Konten-ID und der Lizenzschlüssel für IP-Adressen-Lookups
## siehe https://meta.discourse.org/t/-/173941 für Details
#DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
volumes:
- volume:
host: /mnt/data/discourse/shared/web-only
guest: /shared
- volume:
host: /mnt/data/discourse/shared/web-only/log/var-log
guest: /var/log
## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-shared-edits.git
# Einige Plugins wurden entfernt, da sie jetzt mit dem Core gebündelt sind
# https://meta.discourse.org/t/bundling-more-popular-plugins-with-discourse-core/373574
## = jetzt gebündelt
## - git clone https://github.com/discourse/discourse-chat-integration.git
## - git clone https://github.com/discourse/discourse-openid-connect.git
## - git clone https://github.com/discourse/discourse-calendar.git
## - git clone https://github.com/angusmcleod/discourse-events.git
## - git clone https://github.com/discourse/discourse-data-explorer.git
## - git clone https://github.com/discourse/discourse-reactions.git
## - git clone https://github.com/discourse/discourse-chat.git
## - git clone https://github.com/discourse/discourse-ai.git
## - git clone https://github.com/discourse/discourse-topic-voting.git
## - git clone https://github.com/discourse/discourse-post-voting.git
## - git clone https://github.com/discourse/discourse-user-notes.git
## - git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-docs-card-filter.git
- git clone https://github.com/discourse/discourse-doc-categories.git
## - git clone https://github.com/discourse/discourse-assign.git
## - git clone https://github.com/discourse/discourse-templates.git
- git clone https://github.com/discourse/discourse-saved-searches.git
- git clone https://github.com/discourse/discourse-tooltips.git
- git clone https://github.com/discourse/discourse-category-experts.git
- git clone https://github.com/discourse/discourse-activity-pub.git
- git clone https://github.com/discourse/discourse-follow.git
- git clone https://github.com/nathan-nz/discourse-wikified-posts.git
- git clone https://github.com/discourse/discourse-whos-online.git
- git clone https://github.com/merefield/discourse-workflow.git
## Denken Sie daran, dies ist YAML-Syntax – Sie können nur einen Block mit einem Namen haben
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn Sie die Passwortanmeldung für root konfigurieren möchten, kommentieren Sie dies aus und ändern Sie:
## Verwenden Sie nur eine der folgenden Zeilen:
#- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'xxxxxxxxxxxxxxx')" root
## für den Betrieb hinter einem HAProxy-Load-Balancer mit lokalem nginx auf dem Container-Host
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 127.0.0.1/24;
set_real_ip_from 10.0.0.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header Host $http_host;
proxy_set_header X-Request-Start "t=${msec}";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https; # ersetzt $thescheme;
proxy_set_header X-Real-IP $remote_addr;
types {
## Wenn Sie zusätzliche Benutzer autorisieren möchten, kommentieren Sie dies aus und ändern Sie:
#- exec: ssh-import-id username
#- exec: ssh-import-id anotherusername
- exec: echo "Ende der benutzerdefinierten Befehle"
- exec: awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Autorisierte SSH-Schlüssel für diesen Container:"; } NF\u003e=2 {print $NF;}'
Selbst wenn ich einen rm -rf-Block in die YAML-Datei hinzufüge:
- rm -rf discourse-chat-integration
- rm -rf discourse-openid-connect
- rm -rf discourse-calendar
- rm -rf discourse-events
- rm -rf discourse-data-explorer
- rm -rf discourse-reactions
- rm -rf discourse-chat
- rm -rf discourse-ai
- rm -rf discourse-topic-voting
- rm -rf discourse-post-voting
- rm -rf discourse-user-notes
- rm -rf discourse-solved
- rm -rf discourse-assign
- rm -rf discourse-templates
Schlägt der Bootstrap immer noch mit folgender Fehlermeldung fehl:
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups.rb
/usr/local/bin/pups --stdin
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 669 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
Ich würde das als Fehler bei der Datenbankmigration bei „bundle exec rake db:migrate“ interpretieren. Aber was ist hier die Grundursache? Die discourse2-Datenbank hat bereits die Vector-Erweiterung, die für das (bereits zuvor installierte) discourse-ai-Plugin erforderlich war:
postgres=# \c discourse2
psql (15.12 (Ubuntu 15.12-1.pgdg22.04+1), server 13.20 (Ubuntu 13.20-1.pgdg22.04+1))
You are now connected to database "discourse2" as user "postgres".
discourse2=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
hstore | 1.7 | public | data type for storing sets of (key, value) pairs
pg_trgm | 1.5 | public | text similarity measurement and index searching based on trigrams
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
unaccent | 1.1 | public | text search dictionary that removes accents
vector | 0.8.0 | public | vector data type and ivfflat and hnsw access methods
(5 rows)
Später sehe ich auch die Plugin-Hinweise, obwohl die „git clone“-Zeilen in der YAML-Datei alle kommentiert sind:
---
HINT: The plugin 'discourse-openid-connect' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-openid-connect' from your containers/web_only.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
Um ehrlich zu sein, bin ich jetzt etwas ratlos :
…