docker-registry: Add a Gentoo-based docker-registry
authorW. Trevor King <wking@tremily.us>
Wed, 12 Feb 2014 20:23:27 +0000 (12:23 -0800)
committerW. Trevor King <wking@tremily.us>
Wed, 12 Feb 2014 21:10:08 +0000 (13:10 -0800)
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
build.sh
docker-registry/Dockerfile.template [new file with mode: 0644]
docker-registry/README.md [new file with mode: 0644]
docker-registry/package.accept_keywords [new file with mode: 0644]

index fa9ec939e4364f85495cf47ed242d0ca52663f87..d975648c3a4970c548511a664ded8e0c2252f06b 100644 (file)
--- 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)
index 7f9c1c43066f4c82c1604d3a390724c4b91fb54f..148c30db867d6b451e4065a80b78148339cf875a 100755 (executable)
--- 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 (file)
index 0000000..eff430b
--- /dev/null
@@ -0,0 +1,42 @@
+# Copyright (C) 2013 W. Trevor King <wking@tremily.us>
+#
+# 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 (file)
index 0000000..fb3a154
--- /dev/null
@@ -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 (file)
index 0000000..2f4f090
--- /dev/null
@@ -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