The discussion revolves around fixing a Discourse instance that failed to rebuild with a “NULL-Byte” error. Initially, Thomas_Rother shares the error message and pfaffman suggests restarting the old container with ./launcher start app. However, Thomas_Rother reveals that his setup uses separate containers for web_only and data, and the web_only container fails to start due to a connection issue with the external PostgreSQL database and Redis.
pfaffman advises destroying and restarting the web_only container with ./launcher destroy web_only;./launcher start web_only, which resolves the issue. Thomas_Rother expresses concern about a bootstrap error in the launcher script but RGJ points out that the actual error is an invalid byte sequence in the web-app.yml file.
Upon further investigation, Thomas_Rother discovers that the web_only.yml file is corrupted and needs cleanup. The solution involves editing the YAML file to resolve the errors and warnings reported by yamllint.
Der aktuelle Rebuild der Web-App schlägt mit diesem Fehler fehl:
root@docker2:/var/discourse# ./launcher stop web_only && ./launcher rebuild data && ./launcher rebuild web_only
x86_64 arch detected.
+ /usr/bin/docker stop -t 600 web_only
web_only
x86_64 arch detected.
Ensuring launcher is up to date
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 data
data
./launcher: Zeile 334: Warnung: Kommandoersetzung: NULL-Byte in der Eingabe ignoriert.
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-10-04T15:54:02.326983 #1] INFO -- : Reading from stdin
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `split': invalid byte sequence in UTF-8 (ArgumentError)
split = conf.split("_FILE_SEPERATOR_")
^^^^^^^^^^^^^^^^^^
from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `run'
from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/bin/pups:9:in `<top (required)>'
from /usr/local/bin/pups:25:in `load'
from /usr/local/bin/pups:25:in `<main>'
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
Irgendwelche Ideen, wie man das beheben kann? Mein Forum ist nach diesem Redeployment derzeit nicht verfügbar
In diesem Fall sind web_only und data getrennte Container und der Start des web_only-Containers schlägt mit
oot@docker2:/var/discourse# ./launcher start web_only
x86_64 arch detected.
starting up existing container
+ /usr/bin/docker start web_only
Error response from daemon: Cannot link to a non running container: /data AS /web_only/data
Error: failed to start containers: web_only
Vielleicht muss ich in diesem Fall manuell über Docker starten, da die Datenbank extern auf einem anderen Rechner liegt, siehe diesen Code im web_only YAML:
## connect to central postgres database
DISCOURSE_DB_SOCKET: ''
DISCOURSE_DB_USERNAME: discourse
DISCOURSE_DB_PASSWORD: xxxxxxxxxx
DISCOURSE_DB_HOST: 10.10.xx.xx
DISCOURSE_REDIS_HOST: data
Es sei denn, du hast eine Bereinigung durchgeführt, die den Container gelöscht hat, in diesem Fall hast du wahrscheinlich ein Problem.
Dann wundert es mich, die Fehlermeldung “cannot link” zu sehen. Ich habe sie nur gesehen, wenn versucht wird, einen Docker link zu verwenden, um mit einem anderen Container auf derselben Maschine zu sprechen.
Oh! Ja, es ist Redis, mit dem es keine Verbindung herstellen kann. Du hast einen data-Container mit Redis darin, richtig? Das Destroy-Start sollte mit der angegebenen Einschränkung funktionieren.
@pfaffman danke, das hat es behoben. Ich habe vergessen, dass der Datencontainer auch die Redis-Caching-Funktionalität bereitstellt – aber auf jeden Fall laufen die Container jetzt wieder.
Was können wir mit dem Bootstrap-Fehler aus dem Launcher-Skript, Zeile 334, machen? Ich habe diesen Fehler noch nie zuvor gesehen. Ist der launcher_go/v2 als Ersatz einsatzbereit?
root@docker2:/var/discourse/containers# yamllint web_only.yml
web_only.yml
5:81 error Zeile zu lang (115 > 80 Zeichen) (line-length)
8:1 warning fehlender Dokumentenstart "---" (document-start)
14:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
14:3 warning Kommentar nicht wie Inhalt eingerückt (comments-indentation)
15:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
18:81 error Zeile zu lang (85 > 80 Zeichen) (line-length)
36:3 warning Kommentar nicht wie Inhalt eingerückt (comments-indentation)
37:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
43:81 error Zeile zu lang (85 > 80 Zeichen) (line-length)
44:81 error Zeile zu lang (87 > 80 Zeichen) (line-length)
58:81 error Zeile zu lang (84 > 80 Zeichen) (line-length)
67:81 error Zeile zu lang (90 > 80 Zeichen) (line-length)
68:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
77:81 error Zeile zu lang (83 > 80 Zeichen) (line-length)
79:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
99:81 error Zeile zu lang (81 > 80 Zeichen) (line-length)
110:81 error Zeile zu lang (81 > 80 Zeichen) (line-length)
117:81 error Zeile zu lang (81 > 80 Zeichen) (line-length)
126:43 error nachgestellte Leerzeichen (trailing-spaces)
151:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
154:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
155:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
156:4 warning fehlendes Leerzeichen am Anfang des Kommentars (comments)
156:81 error Zeile zu lang (131 > 80 Zeichen) (line-length)