<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>