У меня есть проект (написанный на рубине), который я хочу запустить в изображении докера. Исходный код проекта хранится в частном репозитории git, изображение создается, как обычно, Dockerfile. Проект огромен, и поэтому кет кет занимает относительно много времени.Cloning private git repo в контейнере докера
Проблема в том, что я не уверен, как (когда/где) клонировать git repo на изображение докера. Я могу клонировать git-репозиторий в каталог temp и копировать исходный код командой COPY в Dockerfile. Я не люблю это делать, так как мне придется поддерживать второй клон во временном каталоге.
Или, я могу клонировать репо в изображении докера. Проблема в том, что у меня ssh-ключ, который я не могу разумно сохранить в изображении. Я могу добавить только «свои собственные» ключи к серверу git, которые позволяют получить доступ ко всему.
Итак, я создал сценарий, как это:
UUID=`uuid`
docker run \
-v $HOME/.ssh:/home/user/.ssh:ro\
--name=$UUID \
-it $1 /scripts/git-clone-update.sh
docker commit $UUID $1
docker rm $UUI
git-clone-update.sh клоны проект, если он не существует, или просто обновление, если он делает. К ним прикреплены ключи .ssh. Он отлично работает. Я могу легко обновить код в изображении, просто позвонив сценарию, передав имя изображения в качестве аргумента. Единственная проблема - Config.Cmd, которая всегда изменяется на /scripts/git-clone-update.sh.
Любая идея, как сохранить исходный файл Config.Cmd? Какова лучшая практика клонирования частного ропо в/на изображение докера?
Thx
Вы видели официальное изображение рубина? Он использовал функцию ONBUILD для создания изображения из рабочего каталога git. Не нужно вызывать git внутри контейнера. Например, см. Http: // stackoverflow.ком/вопросы/29844622/вне-там любой-путь к компиляции и-статически ссылка-рубиновый-LIBS-для-грузчик/29861356 # 29861356 –