Вы также можете смонтировать локальный каталог в свой образ докера и создать скрипт в своем .bashrc
. Не забывайте, что сценарий должен состоять из функций, если вы не хотите, чтобы он выполнялся в каждой новой оболочке. (Это устарело, см. Уведомление об обновлении.)
Я использую это решение, чтобы иметь возможность обновлять скрипт вне экземпляра докера. Таким образом, мне не нужно повторно запускать изображение в случае изменений, я просто открываю новую оболочку. (Избавился от повторного открытия оболочки - см. Уведомление об обновлении)
Вот как вы привязываете свой текущий каталог:
docker run -it -v $PWD:/scripts $my_docker_build /bin/bash
Теперь ваш текущий каталог привязан к /scripts
вашему экземпляру докера.
(Устарело) Чтобы сохранить .bashrc
изменения, зафиксируйте рабочий образ с помощью этой команды:
docker commit $container_id $my_docker_build
Обновить
Чтобы решить проблему, чтобы открывать новую оболочку для каждого изменения, я сейчас делаю следующее:
В самом dockerfile добавляю RUN echo "/scripts/bashrc" > /root/.bashrc"
. Внутри zshrc
я экспортирую директорию скриптов по пути. Каталог скриптов теперь содержит несколько файлов вместо одного. Теперь я могу напрямую вызывать все сценарии, не открывая вспомогательную оболочку при каждом изменении.
Кстати, вы также можете определить файл истории за пределами вашего контейнера. Таким образом, больше не нужно фиксировать изменение bash.
WORKDIR
иCMD
?