From be0daeb3f0081b12c5eacf8cc77457caaa126d4a Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Wed, 12 Feb 2014 12:23:27 -0800 Subject: [PATCH] docker-registry: Add a Gentoo-based docker-registry The requirements are installed using Portage, because that handles non-Python requirements gracefully, and caches all the source tarballs for later use (e.g. if PyPI is down). Note with the 20140206 snapshot, this installs dev-python/gevent-1.0_rc3, which is based on libev not libevent like the pre 1.0 gevents [1]: New version of gevent uses libev and c-ares rather than libevent and includes all the dependencies in the release tarball. You may have to bump your gevent requirements (docker-registry's requirements.txt currently pins it at 0.13.8) or install dev-libs/libevent if you want to run the tox test suite. Bugsnag doesn't have a Gentoo package, so I don't install it. That means you won't be able to use Bugsnag with this image (unless you install it yourself), and you'll want a version of docker-registry that includes e253550 (Merge pull request #241 from wking/optional-bugsnag, 2014-02-11). [1]: https://pypi.python.org/pypi/gevent/0.13.8 --- README.md | 1 + build.sh | 1 + docker-registry/Dockerfile.template | 42 +++++++++++++++++++ docker-registry/README.md | 8 ++++ docker-registry/package.accept_keywords | 54 +++++++++++++++++++++++++ 5 files changed, 106 insertions(+) create mode 100644 docker-registry/Dockerfile.template create mode 100644 docker-registry/README.md create mode 100644 docker-registry/package.accept_keywords diff --git a/README.md b/README.md index fa9ec93..d975648 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ The dependency graph is: `-- gentoo-en-us (adds locale) `-- gentoo-syslog (adds syslog-ng and associates) |-- buildbot (adds a Buildbot master and slave) + |-- docker-registry (adds a Docker registry server) |-- memcached (adds Memcached) |-- nginx (adds Nginx) | |-- nginx-proxy (SSL/TLS proxying via SNI) diff --git a/build.sh b/build.sh index 7f9c1c4..148c30d 100755 --- a/build.sh +++ b/build.sh @@ -46,6 +46,7 @@ REPOS="${REPOS:- gentoo-syslog gentoo-java buildbot + docker-registry elasticsearch memcached nginx diff --git a/docker-registry/Dockerfile.template b/docker-registry/Dockerfile.template new file mode 100644 index 0000000..eff430b --- /dev/null +++ b/docker-registry/Dockerfile.template @@ -0,0 +1,42 @@ +# Copyright (C) 2013 W. Trevor King +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +FROM ${NAMESPACE}/gentoo-syslog:${TAG} +MAINTAINER ${MAINTAINER} +#VOLUME ["${PORTAGE}:/usr/portage:ro", "${PORTAGE}/distfiles:/usr/portage/distfiles:rw"] +RUN echo 'USE="${USE} sqlite"' >> /etc/portage/make.conf +RUN echo 'PYTHON_TARGETS="python2_7"' >> /etc/portage/make.conf +RUN echo 'PYTHON_SINGLE_TARGET="python2_7"' >> /etc/portage/make.conf +RUN echo 'USE_PYTHON="2.7"' >> /etc/portage/make.conf +ADD package.accept_keywords /etc/portage/package.accept_keywords +RUN emerge -v dev-python/blinker dev-python/boto dev-python/backports-lzma dev-python/flask dev-python/gevent dev-python/pyopenssl dev-python/python-glanceclient dev-python/python-keystoneclient dev-python/python-swiftclient dev-python/pyyaml dev-python/redis-py dev-python/requests dev-python/rsa dev-python/simplejson dev-vcs/git www-servers/gunicorn +RUN eselect news read new +RUN git clone git://github.com/dotcloud/docker-registry.git +RUN cp --no-clobber docker-registry/config/config_sample.yml docker-registry/config/config.yml + +# Container networking happens automatically +RUN sed -i 's/need net$/use net/' /etc/init.d/* + +CMD cd docker-registry && ./setup-configs.sh && ./run.sh +EXPOSE 5000 diff --git a/docker-registry/README.md b/docker-registry/README.md new file mode 100644 index 0000000..fb3a154 --- /dev/null +++ b/docker-registry/README.md @@ -0,0 +1,8 @@ +Run this [docker-registry][] image with: + + $ mkdir /var/lib/docker-registry + $ docker run -d -name docker-registry \ + > -v /var/lib/docker-registry:/tmp/registry \ + > -p 5000:5000 wking/docker-registry + +[docker-registry]: https://github.com/dotcloud/docker-registry/ diff --git a/docker-registry/package.accept_keywords b/docker-registry/package.accept_keywords new file mode 100644 index 0000000..2f4f090 --- /dev/null +++ b/docker-registry/package.accept_keywords @@ -0,0 +1,54 @@ +# The following keyword changes are necessary to proceed: +# (see "package.accept_keywords" in the portage(5) man page for more details) + +# required by dev-python/flask (argument) +=dev-python/flask-0.10.1-r1 ~amd64 + +# required by dev-python/flask-0.10.1-r1 +# required by dev-python/flask (argument) +=dev-python/itsdangerous-0.23 ~amd64 +=dev-python/blinker-1.3 ~amd64 + +# required by dev-python/backports-lzma (argument) +=dev-python/backports-lzma-0.0.2-r1 ~amd64 + +# required by dev-python/backports-lzma-0.0.2-r1 +# required by dev-python/backports-lzma (argument) +=dev-python/backports-1.0 ~amd64 + +# required by dev-python/python-glanceclient (argument) +=dev-python/python-glanceclient-0.12.0 ~amd64 + +# required by dev-python/python-glanceclient-0.12.0 +# required by dev-python/python-glanceclient (argument) +=dev-python/python-keystoneclient-0.4.1 ~amd64 +=dev-python/warlock-1.0.1 ~amd64 + +# required by dev-python/warlock-1.0.1 +# required by dev-python/python-glanceclient-0.12.0 +# required by dev-python/python-glanceclient (argument) +=dev-python/jsonpatch-0.12 ~amd64 +=dev-python/jsonschema-2.3.0 ~amd64 + +# required by dev-python/jsonpatch-0.12 +# required by dev-python/warlock-1.0.1 +# required by dev-python/python-glanceclient-0.12.0 +# required by dev-python/python-glanceclient (argument) +=dev-python/jsonpointer-0.7 ~amd64 + +# required by dev-python/python-keystoneclient-0.4.1 +# required by dev-python/python-glanceclient-0.12.0 +# required by dev-python/python-glanceclient (argument) +=dev-python/iso8601-0.1.8 ~amd64 +=dev-python/oslo-config-1.2.1 ~amd64 +=dev-python/netaddr-0.7.10_p20130801 ~amd64 +=dev-python/pbr-0.5.23-r1 ~amd64 +=dev-python/prettytable-0.7.1-r1 ~amd64 +=dev-python/six-1.5.2 ~amd64 + +# required by dev-python/python-swiftclient (argument) +=dev-python/python-swiftclient-1.8.0 ~amd64 + +# required by dev-python/python-swiftclient-1.8.0 +# required by dev-python/python-swiftclient (argument) +=dev-python/d2to1-0.2.11 ~amd64 -- 2.26.2