Wie modifiziere ich eine Dockerfile?

Ich habe noch einige andere Docker-Container und führe Schritte wie diesen aus:

# Kopiert den Inhalt des aktuellen Verzeichnisses in den Container nach /app
COPY html /usr/share/nginx/html/
COPY dim.local.crt /etc/nginx/ssl/
COPY dim.local.key /etc/nginx/ssl/
COPY nginx.conf /etc/nginx/
COPY default.conf /etc/nginx/sites-enabled/

# Installiert alle in requirements.txt angegebenen Pakete
#RUN pip install -r requirements.txt

# Muss Nginx nach den COPY-Befehlen neu gestartet werden?
RUN 

RUN apt-get update \
    && apt-get install -y nano \
    && rm -fr /var/lib/apt/lists/*

Ich muss ähnliche Schritte für meinen Discourse-Container durchführen, aber wo befindet sich die Dockerfile? Ich habe gelesen, dass man diese vielleicht am Ende in containers/app.yml hinzufügen könnte, bin mir aber nicht sicher.

Kann mir das jemand erklären?

Kannst du bitte genau erklären, was du brauchst?

Du musst die Docker-Datei nicht ändern, um ein benutzerdefiniertes Zertifikat hinzuzufügen. Wir haben dafür eine Anleitung unter Allow SSL / HTTPS for your Discourse Docker setup

Ich möchte nicht genau dasselbe tun. Ich habe lediglich Shell-Skripte und eine Crontab, die ich in den Container kopieren möchte, um einige Aufgaben zu automatisieren.

Die letzten 5 Zeilen der app.yml enthalten ein Beispiel für die Ausführung benutzerdefinierter Befehle, z. B. das Hinzufügen von

- exec: curl example.com/script.sh | bash

Dadurch wird das Skript heruntergeladen und ausgeführt.

Ja, das sehe ich, aber bei jedem Neuaufbau erhalte ich Kopierfehler:

## Beliebige benutzerdefinierte Befehle, die nach dem Build ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn Sie die E-Mail-Adresse für 'From' bei Ihrer ersten Registrierung festlegen möchten, entfernen Sie das Kommentarzeichen und ändern Sie:
  ## Nach Erhalt der ersten Anmelde-E-Mail das Kommentarzeichen wieder hinzufügen. Dies muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  
  - exec: cp /shared/rr/run_badges.sh /etc/cron.d/.
  - exec: cp /shared/rr/badges /etc/cron.d/.
  - exec: echo "Ende der benutzerdefinierten Befehle"

Bitte teilen Sie auch das Fehlerprotokoll mit.

Ich könnte sie tatsächlich von einer URL abrufen, das ist ein Gedanke.

Die Dateien sind tatsächlich auf dem Host vorhanden:

# ls -al shared/rr/
badges         run_badges.sh
#

Hier ist der Fehler:

FAILED
--------------------
Pups::ExecError: cp /shared/rr/run_badges.sh /etc/cron.d/. failed with return #<Process::Status: pid 1457 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "cp /shared/rr/run_badges.sh /etc/cron.d/."
e23ff12630c8058c4b36ee8673404dafbe6791ec61aa630f1224400eba4e75e0
** FAILED TO BOOTSTRAP ** bitte nach oben scrollen und nach früheren Fehlermeldungen suchen, es kann mehr als eine geben.
./discourse-doctor kann helfen, das Problem zu diagnostizieren.

Das Verzeichnis /shared im Container ist standardmäßig auf /var/discourse/shared/standalone gemappt, sodass Ihnen dort ein Verzeichnis fehlt.

Welchen Fehler mache ich @Falco

Befehl:

- exec: cp /shared/standalone/sql/run_badges.sh /root
Pups::ExecError: cp /shared/standalone/sql/run_badges.sh /root fehlgeschlagen mit Rückgabewert #<Process::Status: pid 1728 exit 1>

Tatsächlich funktioniert diese Lösung ziemlich gut. Danke, dass du sie erwähnt hast.