- Установленный Docker.
-
Пакеты в репозитории подписываются ключом GPG. Если у вас уже есть пара ключей, экспортируйте ее в ASCII и положите в pgp_keys. Ключи будут импортированы. Если email ключа совпадает с maintainer_email, ключ будет использован. Иначе будет сгенерирован новый ключ.
-
При сборке будет сгенерирован самоподписанный сертификат для nginx. В дальнейшем его можно будет заменить.
-
Генерация ключей требует достаточного количества энтропии. Docker использует источник энтропии хост-машины. Поэтому для ускорения сборки рекомендуется установить haveged.
sudo apt-get install haveged
sudo service haveged start
git clone https://<логин_на_битбакет>@bitbucket.org/third_vending/ubuntu_packages.git
cd ubuntu_packages
docker build [<параметры>] -t ubuntu_packages .
Для каждого параметра нужно указать:
--build-arg <имя_параметра>=<значение>
Параметр | Описание |
---|---|
repo | Название дистрибутива Ubuntu, например 'xenial' |
repo_url | URL где будет развернут репозиторий |
repo_user, repo_passwd | Логин и пароль для защиты репозитория |
repo_label | Описание репозитория |
maintainer_name | Имя для генерации GPG ключа |
maintainer_email | Email для генерации GPG ключа |
git_user, git_passwd | Логин и пароль для Git-репозитория |
Для облегчения сборки существует скрипт config.sh, который запрашивает значения параметров и на их основании генерирует скрипт build.sh, который затем нужно запустить. Введенные параметры сохраняются в файле .settings. Так же скрипт генерирует .yml файл для запуска контейнера с помощью docker-compose.
-
Сгенерируйте подписанные openssl сертификаты для nginx. Например используйте Let’s Encrypt.
-
Если собираетесь использовать docker-compose, изучите ubuntu-packages.yml и подкорректируйте в нем пути к сертификатам.
docker run -p 80:90 -p 443:443 -v <путь к сертификату>:sslcerts/certificate.pem -v <путь к закрытому ключу>:sslcerts/privkey.pem ubuntu-packages --detach
docker-compose -f ubuntu-packages.yml up -d
Если пакет имеет собственную систему сборки, положите скрипт, собирающий пакет, в scripts/src-packages. Расширение .sh обязательно. Не забудьте дать права на запуск. Готовые пакеты должны иметь расширение .deb и находиться в /output
Не храните исходные коды пакетов в этом репозитории!!! Соответствующий скрипт должен самостоятельно получать исходные коды из репозитория Git.
Если пакет не имеет собственной системы сборки, создайте в packages каталог с именем пакета. Внутри каталога создайте файловую структуру, которая должна быть установлена при установке пакета. Создайте внутри каталог DEBIAN, заполните DEBIAN/control. В качестве примера используйте существующие пакеты. Положите в scripts/src-packages скрипт, компилирующий и устанавливающий необходимые файлы в packages/<имя пакета>.
Если пакет не требует компиляции, просто создайте необходимую структуру файлов в packages/<имя пакета>
- Снабдить все пакеты системой самостоятельной сборки.
- Использовать вместо dpkg-deb что-то получше.