Comment modifier un Dockerfile ?

J’ai quelques autres conteneurs Docker et j’exécute des étapes comme suit :

# Copie le contenu du répertoire actuel dans le conteneur à l'adresse /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/

# Installe les packages nécessaires spécifiés dans requirements.txt
#RUN pip install -r requirements.txt

# Faut-il redémarrer nginx après les commandes COPY ?
RUN 

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

Je dois effectuer des étapes similaires pour mon conteneur Discourse, mais où se trouve le Dockerfile ? J’ai lu qu’on pourrait peut-être les ajouter à la fin de containers/app.yml, mais je ne suis pas confiant.

Quelqu’un peut-il m’expliquer ?

Pouvez-vous expliquer exactement ce dont vous avez besoin ?

Il n’est pas nécessaire de modifier le fichier Docker pour ajouter un certificat personnalisé ; nous avons un guide à ce sujet sur Allow SSL / HTTPS for your Discourse Docker setup

Je ne veux pas faire exactement la même chose. J’ai simplement des scripts shell et une crontab que je souhaite copier dans le conteneur afin d’automatiser certaines tâches.

Les 5 dernières lignes de app.yml contiennent un exemple d’exécution de commandes personnalisées, par exemple l’ajout de :

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

Cela téléchargera et exécutera ce script.

Oui, je vois cela, mais à chaque fois que je reconstruis, j’obtiens des erreurs de copie :

## Toutes commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail 'De' pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit être exécutée qu'une seule fois.
  #- 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 "Fin des commandes personnalisées"

Veuillez également partager le journal d’erreur.

Je pourrais effectivement les extraire depuis une URL, c’est une idée.

Les fichiers sont bien présents sur l’hôte :

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

Voici l’erreur :

ÉCHEC
--------------------
Erreur d'exécution Pups : cp /shared/rr/run_badges.sh /etc/cron.d/. a échoué avec le code de retour #<Process::Status: pid 1457 exit 1>
Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'
L'exécution a échoué avec les paramètres "cp /shared/rr/run_badges.sh /etc/cron.d/."
e23ff12630c8058c4b36ee8673404dafbe6791ec61aa630f1224400eba4e75e0
** ÉCHEC DE L'INITIALISATION ** Veuillez faire défiler vers le haut et rechercher les messages d'erreur antérieurs, il peut y en avoir plus d'un.
./discourse-doctor peut aider à diagnostiquer le problème.

Le répertoire /shared à l’intérieur du conteneur est mappé, par défaut, vers /var/discourse/shared/standalone, il vous manque donc un répertoire à cet endroit.

Quelle erreur commets-je @Falco

commande :

- exec: cp /shared/standalone/sql/run_badges.sh /root
Pups::ExecError: cp /shared/standalone/sql/run_badges.sh /root a échoué avec le retour #<Process::Status: pid 1728 exit 1>

En fait, cette solution fonctionne très bien. Merci de l’avoir mentionnée.