# This file describes the standard way to build Docker, using docker
#
# Usage:
#
# # Assemble the full dev environment. This is slow the first time.
# docker build -t docker .
# # Apparmor messes with privileged mode: disable it
# /etc/init.d/apparmor stop ; /etc/init.d/apparmor teardown
#
# # Mount your source in an interactive container for quick testing:
# docker run -v `pwd`:/go/src/github.com/dotcloud/docker -privileged -lxc-conf=lxc.aa_profile=unconfined -i -t docker bash
#
#
# # Run the test suite:
# docker run -privileged -lxc-conf=lxc.aa_profile=unconfined docker hack/make.sh test
#
# # Publish a release:
# docker run -privileged -lxc-conf=lxc.aa_profile=unconfined \
#  -e AWS_S3_BUCKET=baz \
#  -e AWS_ACCESS_KEY=foo \
#  -e AWS_SECRET_KEY=bar \
#  -e GPG_PASSPHRASE=gloubiboulga \
#  docker hack/release.sh
#

docker-version 0.6.1
from    ubuntu:12.10
maintainer      Solomon Hykes <solomon@dotcloud.com>

# Build dependencies
run     apt-get update
run     apt-get install -y -q curl
run     apt-get install -y -q git
run     apt-get install -y -q mercurial
run     apt-get install -y -q build-essential
run     apt-get install -y -q libsqlite3-dev

# Install Go from source (for eventual cross-compiling)
run     curl -s https://go.googlecode.com/files/go1.2rc1.src.tar.gz | tar -v -C / -xz && mv /go /goroot
run     cd /goroot/src && ./make.bash
env     GOROOT  /goroot
env     PATH    $PATH:/goroot/bin
env     GOPATH  /go:/go/src/github.com/dotcloud/docker/vendor

# Create Go cache with tag netgo (for static compilation of Go while preserving CGO support)
run     go install -ldflags '-w -linkmode external -extldflags "-static -Wl,--unresolved-symbols=ignore-in-shared-libs"' -tags netgo -a std

# Get lvm2 source for compiling statically
run     git clone git://git.fedorahosted.org/git/lvm2.git /lvm2
run     cd /lvm2 && git checkout v2_02_102

# can't use git clone -b because it's not supported by git versions before 1.7.10
run	cd /lvm2 && ./configure --enable-static_link && make && make install_device-mapper
# see https://git.fedorahosted.org/cgit/lvm2.git/refs/tags for release tags

# Ubuntu stuff
run     apt-get install -y -q ruby1.9.3 rubygems libffi-dev
run     gem install --no-rdoc --no-ri fpm
run     apt-get install -y -q reprepro dpkg-sig

# Install s3cmd 1.0.1 (earlier versions don't support env variables in the config)
run     apt-get install -y -q python-pip
run     pip install s3cmd
run     pip install python-magic
run     /bin/echo -e '[default]\naccess_key=$AWS_ACCESS_KEY\nsecret_key=$AWS_SECRET_KEY\n' > /.s3cfg

# Runtime dependencies
run     apt-get install -y -q iptables
run     dpkg-divert --local --rename --add /sbin/initctl && \
        ln -s /bin/true /sbin/initctl && \
        apt-get install -y -q lxc

volume  /var/lib/docker
workdir /go/src/github.com/dotcloud/docker

# Wrap all commands in the "docker-in-docker" script to allow nested containers
entrypoint ["hack/dind"]

# Upload docker source
add     .		/go/src/github.com/dotcloud/docker

