Как изменить Dockerfile?

У меня есть несколько других контейнеров Docker, и я выполняю шаги следующим образом:

# Скопировать содержимое текущей директории в контейнер по пути /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/

# Установить все необходимые пакеты, указанные в requirements.txt
#RUN pip install -r requirements.txt

# Нужно ли перезапускать nginx после команд COPY?
RUN 

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

Мне нужно выполнить аналогичные шаги для моего контейнера Discourse, но где находится Dockerfile? Я читал, что, возможно, можно добавить их в конец файла containers/app.yml, но я не уверен.

Может ли кто-нибудь объяснить?

Можете ли вы точно объяснить, что вам нужно?

Нет необходимости редактировать Dockerfile для добавления пользовательского сертификата — у нас есть руководство по этому вопросу: Allow SSL / HTTPS for your Discourse Docker setup

Я не хочу делать точно такое же. У меня есть просто shell-скрипты и crontab, которые я хочу скопировать в контейнер, чтобы автоматизировать некоторые задачи.

Последние 5 строк в файле app.yml содержат пример выполнения пользовательских команд, например добавление

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

Это загрузит и выполнит указанный скрипт.

Да, я вижу это, но каждый раз при пересборке возникают ошибки копирования:

## Любые пользовательские команды для выполнения после сборки
run:
  - exec: echo "Начало пользовательских команд"
  ## Если вы хотите установить адрес электронной почты 'From' для вашей первой регистрации, раскомментируйте и измените:
  ## После получения первого письма о регистрации закомментируйте строку обратно. Она должна выполниться только один раз.
  #- 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 "Конец пользовательских команд"

Пожалуйста, также приложите журнал ошибок.

Я действительно мог бы извлечь их из URL-адреса, это интересная мысль.

Файлы действительно присутствуют на хосте:

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

Вот ошибка:

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 ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Каталог /shared внутри контейнера по умолчанию сопоставлен с /var/discourse/shared/standalone, поэтому в нём отсутствует каталог.

Какую ошибку я допускаю, @Falco?

Команда:

- exec: cp /shared/standalone/sql/run_badges.sh /root
Pups::ExecError: cp /shared/standalone/sql/run_badges.sh /root завершилась с ошибкой #<Process::Status: pid 1728 exit 1>

На самом деле это решение работает довольно хорошо. Спасибо, что упомянули его.