diff --git a/.gitignore b/.gitignore index 20a30ab1f..bfa6b1372 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ imagebuild/coreos/UPLOAD _build doc/source/api/ doc/build +.proxy.sh.save # release notes build releasenotes/build diff --git a/Dockerfile b/Dockerfile index 585f2ce83..a3c27367a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,22 +5,30 @@ FROM debian:jessie # different it will not cache this layer ADD . /tmp/ironic-python-agent +# Copy the proxy.sh script which copies the proxy settings from the host +# environment (if they are set). This file will be dynamically created by +# imagebuild/coreos/docker_build.bash +# TODO(jlvilla): Once Docker 1.9 is widely deployed, switch to using the 'ARG' +# command which was added in Docker 1.9. Currently Ubuntu 14.04 uses Docker +# 1.6. Using the ARG command will be a much cleaner solution. +COPY proxy.sh /usr/bin/proxy.sh + # Add 'testing' for qemu-utils RUN echo 'APT::Default-Release "jessie";' > /etc/apt/apt.conf.d/10default && \ sed -e 's/jessie/testing/g' /etc/apt/sources.list > /etc/apt/sources.list.d/testing.list # Install requirements: Python for ironic-python-agent, others for putting an # image on disk -RUN apt-get update && \ - apt-get -y upgrade && \ - apt-get install -y --no-install-recommends gdisk python2.7 python2.7-dev \ +RUN proxy.sh apt-get update && \ + proxy.sh apt-get -y upgrade && \ + proxy.sh apt-get install -y --no-install-recommends gdisk python2.7 python2.7-dev \ python-pip qemu-utils parted hdparm util-linux genisoimage git gcc \ bash coreutils tgt dmidecode ipmitool && \ - apt-get --only-upgrade -t testing install -y qemu-utils + proxy.sh apt-get --only-upgrade -t testing install -y qemu-utils # Some cleanup -RUN apt-get -y autoremove && \ - apt-get clean +RUN proxy.sh apt-get -y autoremove && \ + proxy.sh apt-get clean # Before cleaning mark packages that are required so they are not removed RUN apt-mark manual python-setuptools @@ -28,18 +36,18 @@ RUN apt-mark manual python-minimal # Install requirements separately, because pip understands a git+https url # while setuptools doesn't -RUN pip install --upgrade pip -RUN pip install --no-cache-dir -r /tmp/ironic-python-agent/requirements.txt +RUN proxy.sh pip install --upgrade pip +RUN proxy.sh pip install --no-cache-dir -r /tmp/ironic-python-agent/requirements.txt # This will succeed because all the dependencies were installed previously -RUN pip install --no-cache-dir /tmp/ironic-python-agent +RUN proxy.sh pip install --no-cache-dir /tmp/ironic-python-agent # Remove no longer needed packages # NOTE(jroll) leave git to avoid strange apt issues in downstream Dockerfiles # that may inherit from this one. -RUN apt-get -y purge gcc-4.6 gcc python2.7-dev && \ - apt-get -y autoremove && \ - apt-get clean +RUN proxy.sh apt-get -y purge gcc-4.6 gcc python2.7-dev && \ + proxy.sh apt-get -y autoremove && \ + proxy.sh apt-get clean RUN rm -rf /tmp/ironic-python-agent RUN rm -rf /var/lib/apt/lists/* diff --git a/imagebuild/coreos/docker_build.bash b/imagebuild/coreos/docker_build.bash index f3c747696..9386ef677 100755 --- a/imagebuild/coreos/docker_build.bash +++ b/imagebuild/coreos/docker_build.bash @@ -16,7 +16,24 @@ fi # Build the docker image cd ../../ + +# TODO(jlvilla): Once Docker 1.9 is widely deployed, switch to using the 'ARG' +# command which was added in Docker 1.9. Currently Ubuntu 14.04 uses Docker +# 1.6. Using the ARG command will be a much cleaner solution. +mv proxy.sh .proxy.sh.save || true +# Create a temporary proxy.sh script, that will be used by the Dockerfile. +# Since we are calling 'docker build' we can not use --env-file/--env as those +# are arguments to 'docker run' +echo '#!/bin/sh' > proxy.sh +echo 'echo Running: $*' >> proxy.sh +echo "http_proxy=${http_proxy:-} https_proxy=${https_proxy:-} no_proxy=${no_proxy:-} "'$*' >> proxy.sh +chmod 0755 proxy.sh + docker build -t oemdocker . + +# Restore saved copy +mv .proxy.sh.save proxy.sh || true + cd - # Create a UUID to identify the build diff --git a/proxy.sh b/proxy.sh new file mode 100755 index 000000000..87af438b3 --- /dev/null +++ b/proxy.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Have things work for users who didn't run with the +# imagebuild/coreos/docker_build.bash script + +$*