RUN
і ENTRYPOINT
є двома різними способами виконання сценарію.
RUN
означає, що він створює проміжний контейнер, запускає сценарій і заморожує новий стан цього контейнера в новому проміжному зображенні. Після цього сценарій не запускатиметься: ваше остаточне зображення має відображати результат цього сценарію.
ENTRYPOINT
означає, що ваше зображення (яке ще не виконало сценарій) створить контейнер і запустить цей сценарій.
В обох випадках слід додати сценарій, і RUN chmod +x /bootstrap.sh
це гарна ідея.
Це також повинно починатися з шебанга (типу #!/bin/sh
)
Беручи до уваги ваш сценарій ( bootstarp.sh
: кілька git config --global
команд), було б краще, щоб RUN
цей сценарій один раз був у вашому Dockerfile
, але обов’язково використовував правильного користувача (глобальний git config
файл %HOME%/.gitconfig
, який за замовчуванням є /root
одним)
Додайте до свого файлу Docker:
RUN /bootstart.sh
Потім під час запуску контейнера перевірте вміст, /root/.gitconfig
щоб підтвердити запуск сценарію.
bootstarp.sh
встановлений виконуваний біт?