<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/9136">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Harald Welte: Looks good to me, approved; Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">dockerfile for patchwork patch tracking software<br><br>Change-Id: I4095148d2c8a1b6ba9beafda053c38022b147819<br>---<br>A patchwork/Dockerfile<br>A patchwork/Dockerfile.fdo<br>A patchwork/Dockerfile.upstream<br>A patchwork/docker-entrypoint.sh<br>A patchwork/production.py<br>5 files changed, 182 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/patchwork/Dockerfile b/patchwork/Dockerfile</span><br><span>new file mode 120000</span><br><span>index 0000000..dc5eff5</span><br><span>--- /dev/null</span><br><span>+++ b/patchwork/Dockerfile</span><br><span>@@ -0,0 +1 @@</span><br><span style="color: hsl(120, 100%, 40%);">+Dockerfile.fdo</span><br><span>\ No newline at end of file</span><br><span>diff --git a/patchwork/Dockerfile.fdo b/patchwork/Dockerfile.fdo</span><br><span>new file mode 100644</span><br><span>index 0000000..228ee8c</span><br><span>--- /dev/null</span><br><span>+++ b/patchwork/Dockerfile.fdo</span><br><span>@@ -0,0 +1,47 @@</span><br><span style="color: hsl(120, 100%, 40%);">+FROM debian</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# freedesktop.org version of patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN apt-get update && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(120, 100%, 40%);">+ ca-certificates \</span><br><span style="color: hsl(120, 100%, 40%);">+ git \</span><br><span style="color: hsl(120, 100%, 40%);">+ libjs-jquery \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3 \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-celery \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-django \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-django-jsonfield \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-django-filters \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-djangorestframework \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-mysqldb \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-pip \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-psycopg2 \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-sqlparse \</span><br><span style="color: hsl(120, 100%, 40%);">+ wget && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get clean</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN pip3 install drf-nested-routers</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WORKDIR /opt</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ARG VERSION_TAG=2.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#RUN wget https://github.com/getpatchwork/patchwork/archive/v$VERSION_TAG.tar.gz && \</span><br><span style="color: hsl(120, 100%, 40%);">+ #tar xzf v$VERSION_TAG.tar.gz && \</span><br><span style="color: hsl(120, 100%, 40%);">+ #mv patchwork-$VERSION_TAG patchwork && \</span><br><span style="color: hsl(120, 100%, 40%);">+ #rm v$VERSION_TAG.tar.gz</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN git clone https://github.com/dlespiau/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WORKDIR /opt/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COPY production.py patchwork/settings/production.py</span><br><span style="color: hsl(120, 100%, 40%);">+COPY docker-entrypoint.sh /docker-entrypoint.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN mkdir -p /var/www/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+VOLUME /var/www/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#RUN DJANGO_SECRET_KEY=foo python3 manage.py collectstatic</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CMD /docker-entrypoint.sh</span><br><span>diff --git a/patchwork/Dockerfile.upstream b/patchwork/Dockerfile.upstream</span><br><span>new file mode 100644</span><br><span>index 0000000..30dff82</span><br><span>--- /dev/null</span><br><span>+++ b/patchwork/Dockerfile.upstream</span><br><span>@@ -0,0 +1,42 @@</span><br><span style="color: hsl(120, 100%, 40%);">+FROM debian</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# upstream version of patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN apt-get update && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(120, 100%, 40%);">+ ca-certificates \</span><br><span style="color: hsl(120, 100%, 40%);">+ git \</span><br><span style="color: hsl(120, 100%, 40%);">+ libjs-jquery \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3 \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-celery \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-django \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-django-filters \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-djangorestframework \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-mysqldb \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-psycopg2 \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-sqlparse \</span><br><span style="color: hsl(120, 100%, 40%);">+ wget && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get clean</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WORKDIR /opt</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ARG VERSION_TAG=2.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN wget https://github.com/getpatchwork/patchwork/archive/v$VERSION_TAG.tar.gz && \</span><br><span style="color: hsl(120, 100%, 40%);">+ tar xzf v$VERSION_TAG.tar.gz && \</span><br><span style="color: hsl(120, 100%, 40%);">+ mv patchwork-$VERSION_TAG patchwork && \</span><br><span style="color: hsl(120, 100%, 40%);">+ rm v$VERSION_TAG.tar.gz</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+WORKDIR /opt/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COPY production.py patchwork/settings/production.py</span><br><span style="color: hsl(120, 100%, 40%);">+COPY docker-entrypoint.sh /docker-entrypoint.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN mkdir -p /var/www/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+VOLUME /var/www/patchwork</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#RUN DJANGO_SECRET_KEY=foo python3 manage.py collectstatic</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CMD /docker-entrypoint.sh</span><br><span>diff --git a/patchwork/docker-entrypoint.sh b/patchwork/docker-entrypoint.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..63ba941</span><br><span>--- /dev/null</span><br><span>+++ b/patchwork/docker-entrypoint.sh</span><br><span>@@ -0,0 +1,10 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+set -e</span><br><span style="color: hsl(120, 100%, 40%);">+set -x</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+python3 manage.py check</span><br><span style="color: hsl(120, 100%, 40%);">+python3 manage.py migrate</span><br><span style="color: hsl(120, 100%, 40%);">+python3 manage.py collectstatic --noinput</span><br><span style="color: hsl(120, 100%, 40%);">+python3 manage.py loaddata default_tags default_states</span><br><span style="color: hsl(120, 100%, 40%);">+python3 manage.py runserver 0.0.0.0:8000</span><br><span>diff --git a/patchwork/production.py b/patchwork/production.py</span><br><span>new file mode 100644</span><br><span>index 0000000..587c39a</span><br><span>--- /dev/null</span><br><span>+++ b/patchwork/production.py</span><br><span>@@ -0,0 +1,82 @@</span><br><span style="color: hsl(120, 100%, 40%);">+"""</span><br><span style="color: hsl(120, 100%, 40%);">+Sample production-ready settings for patchwork project.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Most of these are commented out as they will be installation dependent.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Design based on:</span><br><span style="color: hsl(120, 100%, 40%);">+ http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/</span><br><span style="color: hsl(120, 100%, 40%);">+"""</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+from __future__ import absolute_import</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import os</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import django</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+from .base import * # noqa</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# Core settings</span><br><span style="color: hsl(120, 100%, 40%);">+# https://docs.djangoproject.com/en/1.8/ref/settings/#core-settings</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Security</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# You'll need to replace this to a random string. The following python code can</span><br><span style="color: hsl(120, 100%, 40%);">+# be used to generate a secret key:</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# import string, random</span><br><span style="color: hsl(120, 100%, 40%);">+# chars = string.letters + string.digits + string.punctuation</span><br><span style="color: hsl(120, 100%, 40%);">+# print repr("".join([random.choice(chars) for i in range(0,50)]))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SECRET_KEY = os.environ['DJANGO_SECRET_KEY']</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Email</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# Replace this with your own details</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EMAIL_HOST = os.getenv('EMAIL_HOST', 'localhost')</span><br><span style="color: hsl(120, 100%, 40%);">+EMAIL_PORT = os.getenv('EMAIL_PORT', 25)</span><br><span style="color: hsl(120, 100%, 40%);">+EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER', '')</span><br><span style="color: hsl(120, 100%, 40%);">+EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD', '')</span><br><span style="color: hsl(120, 100%, 40%);">+EMAIL_USE_TLS = True</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFAULT_FROM_EMAIL = 'Patchwork <patchwork@lists.osmocom.org>'</span><br><span style="color: hsl(120, 100%, 40%);">+SERVER_EMAIL = DEFAULT_FROM_EMAIL</span><br><span style="color: hsl(120, 100%, 40%);">+NOTIFICATION_FROM_EMAIL = DEFAULT_FROM_EMAIL</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ADMINS = (</span><br><span style="color: hsl(120, 100%, 40%);">+ ('Holger Freyther', 'holger@freyther.de'),</span><br><span style="color: hsl(120, 100%, 40%);">+ ('Holger Freyther', 'holger+p@freyther.de'),</span><br><span style="color: hsl(120, 100%, 40%);">+)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Database</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# If you're using a postgres database, connecting over a local unix-domain</span><br><span style="color: hsl(120, 100%, 40%);">+# socket, then the following setting should work for you. Otherwise,</span><br><span style="color: hsl(120, 100%, 40%);">+# see https://docs.djangoproject.com/en/1.8/ref/settings/#databases</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DATABASES = {</span><br><span style="color: hsl(120, 100%, 40%);">+ 'default': {</span><br><span style="color: hsl(120, 100%, 40%);">+ 'ENGINE': 'django.db.backends.mysql',</span><br><span style="color: hsl(120, 100%, 40%);">+ 'NAME': os.environ.get('DATABASE_NAME', ''),</span><br><span style="color: hsl(120, 100%, 40%);">+ 'USER': os.environ.get('DATABASE_USER', ''),</span><br><span style="color: hsl(120, 100%, 40%);">+ 'PASSWORD': os.environ.get('DATABASE_PASSWORD', ''),</span><br><span style="color: hsl(120, 100%, 40%);">+ 'HOST': os.environ.get('DATABASE_HOST', ''),</span><br><span style="color: hsl(120, 100%, 40%);">+ 'PORT': os.environ.get('DATABASE_PORT', ''),</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# Static files settings</span><br><span style="color: hsl(120, 100%, 40%);">+# https://docs.djangoproject.com/en/1.8/ref/settings/#static-files</span><br><span style="color: hsl(120, 100%, 40%);">+# https://docs.djangoproject.com/en/1.8/ref/contrib/staticfiles/#manifeststaticfilesstorage</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+STATIC_ROOT = os.environ.get('STATIC_ROOT', '/var/www/patchwork')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if django.VERSION >= (1, 7):</span><br><span style="color: hsl(120, 100%, 40%);">+ STATICFILES_STORAGE = \</span><br><span style="color: hsl(120, 100%, 40%);">+ 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ALLOWED_HOSTS = ['*']</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9136">change 9136</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/9136"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: docker-playground </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I4095148d2c8a1b6ba9beafda053c38022b147819 </div>
<div style="display:none"> Gerrit-Change-Number: 9136 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>