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