parent
92918f20ae
commit
8d33f29880
2 changed files with 60 additions and 1 deletions
@ -0,0 +1,59 @@ |
||||
#!/bin/bash -e |
||||
|
||||
# pass your docker hub login name as $1, defaults to your user name |
||||
# you should have a repositories named ubuntu and debian |
||||
# if you have your own repository, you can also prepend it: |
||||
# my.repo.url:5000/myname the script will then append ubuntu or debian |
||||
# e.g. to my.repo.url:5000/myname/ubuntu:trusty-amd64 |
||||
# please login to docker before you start this script |
||||
docker_user=${1:-${docker_user:-$(id -un)}} |
||||
|
||||
if test -f /etc/setup-debootstrap.conf; then |
||||
. /etc/setup-debootstrap.conf |
||||
fi |
||||
|
||||
archs=${archs:-"i386 amd64"} |
||||
|
||||
ubuntu=${ubuntu:-"wily vivid trusty precise"} |
||||
debian=${debian:-"jessie wheezy squeeze sid"} |
||||
distros="${ubuntu} ${debian}" |
||||
tmpdir=${tmpdir:-"/var/tmp"} |
||||
packages=(${packages:-"python-software-properties|software-properties-common" "apt-transport-https dpkg-dev lsb-release"}) |
||||
|
||||
for arch in ${archs}; do |
||||
for distro in ${distros}; do |
||||
if test "${ubuntu//${distro}/}" != "${ubuntu}"; then |
||||
type="ubuntu" |
||||
else |
||||
type="debian" |
||||
fi |
||||
echo "******** process $type $distro $arch ********" 1>&2 |
||||
if test -d "${tmpdir}/${distro}-${arch}"; then |
||||
echo " ++++ already exists ${tmpdir}/${distro}-${arch}" 1>&2 |
||||
else |
||||
echo " ---- install ${tmpdir}/${distro}-${arch}" 1>&2 |
||||
sudo debootstrap --arch="$arch" "$distro" "${tmpdir}/${distro}-${arch}" |
||||
fi |
||||
echo " ---- upgrade ${tmpdir}/${distro}-${arch}" 1>&2 |
||||
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get update |
||||
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get -y upgrade |
||||
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get -y dist-upgrade |
||||
for package in "${packages[@]}"; do |
||||
echo " ---- install ${package//|/ or } to ${tmpdir}/${distro}-${arch}" 1>&2 |
||||
IFS='|' read -r -a pkgs <<< "$package" |
||||
success=0 |
||||
for pkg in "${pkgs[@]}"; do |
||||
if sudo chroot "${tmpdir}/${distro}-${arch}" apt-get install -y ${pkg}; then |
||||
success=1; |
||||
break; |
||||
fi |
||||
done |
||||
test $success -eq 1 |
||||
done |
||||
echo " ---- import ${tmpdir}/${distro}-${arch} to ${docker_user}/${type}:${distro}-${arch}" 1>&2 |
||||
cd "${tmpdir}/${distro}-${arch}" |
||||
sudo tar c . | docker import - "${docker_user}/${type}:${distro}-${arch}" |
||||
echo " ---- push ${tmpdir}/${distro}-${arch} to ${docker_user}/${type}:${distro}-${arch}" 1>&2 |
||||
docker push "${docker_user}/${type}:${distro}-${arch}" |
||||
done |
||||
done |
Loading…
Reference in new issue