Как поместить код в образ докера при сборке - PullRequest
0 голосов
/ 31 октября 2018

Я хочу клонировать код в образ докера при его создании

Я думаю передать ssh-ключи во время git clone, который не работает. ниже команда, которую я использую, показывая отказано в разрешении

ssh-agent bash -c 'ssh-add /home/username/.ssh/id_rsa.pub my keys;  git clone ssh://git@location.git'

Я не могу использовать клонирование с использованием https

ТАКЖЕ говорите, что если код клонирован на изображении, МОЖЕМ ЛИ ВЫБРАТЬ, ЧТОБЫ РАБОТАЕТ НА КОНТЕЙНЕРЕ

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Итак, здесь есть две настоящие парадигмы:

  1. Я работаю на своей локальной машине. В этом случае вы, скорее всего, уже извлекли код на свой локальный компьютер. Здесь просто используйте директиву COPY, чтобы взять всю папку и поместить ее куда-нибудь в контейнер. Не нужно беспокоиться о мерзавце или чем-то в этом роде.

  2. У меня есть сервер сборки, чтобы выполнить сборку В этом случае имеет смысл позволить серверу сборки проверить код и затем выполнить то же действие, что и выше. Мы просто копируем проверенный код в изображение

Наконец, еще одна альтернатива, которая работает для динамических языков, таких как PHP, JS и т. Д., - НЕ помещать код в изображение, а монтировать код в контейнер во время выполнения.

Давайте возьмем PHP для примера. Если веб-сервер ищет в / var / www / html код, вы можете запустить свое изображение следующим образом:

docker run -d --name {containername} -p 80:80 -p 443:443 -v /my/dir/where/code/is:/var/www/html {your base image}

Приведенное выше создаст изображение, но передаст ваш локальный каталог в каталог / var / www / html, что означает, что любые изменения, которые вы делаете локально, будут отображаться в исходном коде контейнера. Это было гораздо более широко использовано в Vagrant и в первые дни докера, пока композитор не был стабильным.

0 голосов
/ 31 октября 2018

Я думаю, что способ сделать это

в вашей сборочной машине

  1. git clone <repo>
  2. git archive --format=tar.gz <commit_hash/branch> --output=code.tar.gz
  3. docker build

в Dockerfile вам нужно будет добавить

ADD code.tar.gz <directory>

Это гарантирует, что вы не добавляете какие-либо файлы .git в свой контейнер, и он будет по возможности небольшим по размеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...