¿Cómo modificar Dockerfile?

Tengo algunos otros contenedores de Docker y ejecuto pasos como este:

# Copiar el contenido del directorio actual al contenedor en /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/

# Instalar cualquier paquete necesario especificado en requirements.txt
#RUN pip install -r requirements.txt

# ¿Es necesario reiniciar nginx después de los comandos COPY?
RUN 

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

Necesito realizar pasos similares en mi contenedor de Discourse, pero ¿dónde está el Dockerfile? He leído que quizás podría agregar estos al final de containers/app.yml, pero no estoy seguro.

¿Alguien puede explicarlo?

¿Puedes explicar exactamente qué necesitas?

No es necesario modificar el archivo Docker para agregar un certificado personalizado; tenemos una guía sobre ello en Allow SSL / HTTPS for your Discourse Docker setup

No quiero hacer exactamente lo mismo. Solo tengo scripts de shell y un crontab que quiero copiar en el contenedor para poder automatizar algunas tareas.

Las últimas 5 líneas de app.yml contienen un ejemplo de ejecución de comandos personalizados, por ejemplo, agregar

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

Descargará y ejecutará ese script.

Sí, lo veo, pero cada vez que reconstruyo obtengo errores de copia:

## Cualquier comando personalizado para ejecutar después de la compilación
run:
  - exec: echo "Inicio de comandos personalizados"
  ## Si deseas establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y modifica:
  ## Después de recibir el primer correo de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
  #- 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 de comandos personalizados"

Por favor, comparte también el registro de errores.

Podría extraerlos desde una URL, es una idea

Los archivos efectivamente están presentes en el host:

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

Aquí está el error:

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 ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.

El directorio /shared dentro del contenedor está mapeado, por defecto, a /var/discourse/shared/standalone, por lo que te falta un directorio allí.

¿Qué error estoy cometiendo @Falco?

comando:

- exec: cp /shared/standalone/sql/run_badges.sh /root
Pups::ExecError: cp /shared/standalone/sql/run_badges.sh /root falló con el retorno #<Process::Status: pid 1728 exit 1>

En realidad, esta solución funciona bastante bien. Gracias por mencionarla.