| #!/bin/bash |
| set -e |
| |
| # these should match the names found at http://www.debian.org/releases/ |
| stableSuite='squeeze' |
| testingSuite='wheezy' |
| unstableSuite='sid' |
| |
| # if suite is equal to this, it gets the "latest" tag |
| latestSuite="$testingSuite" |
| |
| variant='minbase' |
| include='iproute,iputils-ping' |
| |
| repo="$1" |
| suite="${2:-$latestSuite}" |
| mirror="${3:-}" # stick to the default debootstrap mirror if one is not provided |
| |
| if [ ! "$repo" ]; then |
| echo >&2 "usage: $0 repo [suite [mirror]]" |
| echo >&2 " ie: $0 tianon/debian squeeze" |
| exit 1 |
| fi |
| |
| target="/tmp/docker-rootfs-debian-$suite-$$-$RANDOM" |
| |
| cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" |
| returnTo="$(pwd -P)" |
| |
| set -x |
| |
| # bootstrap |
| mkdir -p "$target" |
| sudo debootstrap --verbose --variant="$variant" --include="$include" "$suite" "$target" "$mirror" |
| |
| cd "$target" |
| |
| # create the image |
| img=$(sudo tar -c . | docker import -) |
| |
| # tag suite |
| docker tag $img $repo $suite |
| |
| if [ "$suite" = "$latestSuite" ]; then |
| # tag latest |
| docker tag $img $repo latest |
| fi |
| |
| # test the image |
| docker run -i -t $repo:$suite echo success |
| |
| # unstable's version numbers match testing (since it's mostly just a sandbox for testing), so it doesn't get a version number tag |
| if [ "$suite" != "$unstableSuite" -a "$suite" != 'unstable' ]; then |
| # tag the specific version |
| ver=$(docker run $repo:$suite cat /etc/debian_version) |
| docker tag $img $repo $ver |
| fi |
| |
| # cleanup |
| cd "$returnTo" |
| sudo rm -rf "$target" |