Ответ 1
(Просто предложение)
У нас обычно есть следующая структура для построения наших изображений докеров:
my-image/
├── assets
│ ├── entrypoint.sh
│ └── install.sh
├── build.sh
├── Dockerfile
├── README.md
└── VERSION
- build.sh: Это вы должны были вызвать
script_that_creates_magic_file.sh
. Другие распространенные задачи включают загрузку необходимых файлов или временное копирование ключей ssh с хоста. Наконец, этот скрипт вызоветdocker build.
- Dockerfile: Как обычно, но в зависимости от количества команд, которые нам нужно запустить, у нас может быть
install.sh
- install.sh: Это копируется и запускается внутри контейнера, устанавливает пакеты, удаляет ненужные файлы и т.д. Не будучи уверенным на 100% - я думаю, что такой подход уменьшает количество слоев, избегая нескольких команд за один
RUN
- entrypoint.sh: Точка входа в контейнер. Позволяет нам выполнять задачи при запуске контейнера (например, переменные среды разбора) и распечатать информацию об отладке
Я считаю, что эта структура удобна и самодокументирована, так как каждый в команде может создавать любое изображение (никаких специальных инструкций/шагов). README там, чтобы объяснить, что делает изображение... но я не буду врать вам... он обычно пуст... (или имеет h1
для отображения gitlab) :)