commit 9113611283910e627562ee6c42964cdc2cfa488e
Author: Valentin Gehrke <madmaurice@zom.bi>
Date:   Thu Sep 7 17:43:00 2017 +0200

    Initial commit.

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1120be9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+docker-compose.yml
diff --git a/db/Dockerfile b/db/Dockerfile
new file mode 100644
index 0000000..5ed26a0
--- /dev/null
+++ b/db/Dockerfile
@@ -0,0 +1,5 @@
+FROM mariadb:latest
+
+ADD innodb.cnf /etc/mysql/mariadb.conf.d/innodb.cnf
+
+
diff --git a/db/innodb.cnf b/db/innodb.cnf
new file mode 100644
index 0000000..0d2d032
--- /dev/null
+++ b/db/innodb.cnf
@@ -0,0 +1,4 @@
+[mysqld]
+innodb_large_prefix=true
+innodb_file_format=barracuda
+innodb_file_per_table=1
diff --git a/docker-compose.yml.dist b/docker-compose.yml.dist
new file mode 100644
index 0000000..2d98dba
--- /dev/null
+++ b/docker-compose.yml.dist
@@ -0,0 +1,33 @@
+version: "2"
+
+services:
+    webservice:
+        build: ./webservice
+        volumes:
+            - "/nextcloud/config:/var/www/html/config"
+            - "/nextcloud/data:/var/www/html/data"
+        ports:
+            - "8000:80"
+        networks:
+            - web
+            - internal
+
+    db:
+        build: ./db
+        volumes:
+            - "/nextcloud/db:/var/lib/mysql"
+        environment:
+            - MYSQL_ROOT_PASSWORD=toor
+        networks:
+            - internal
+
+    redis:
+        image: redis
+        networks:
+            - internal
+
+networks:
+    web:
+        external:
+            name: proxy_web
+    internal:
diff --git a/webservice/.Dockerfile.swp b/webservice/.Dockerfile.swp
new file mode 100644
index 0000000..30e922d
Binary files /dev/null and b/webservice/.Dockerfile.swp differ
diff --git a/webservice/Dockerfile b/webservice/Dockerfile
new file mode 100644
index 0000000..2c6a7b5
--- /dev/null
+++ b/webservice/Dockerfile
@@ -0,0 +1,93 @@
+FROM php:apache
+
+ENV NEXTCLOUD_VERSION 12.0.2
+
+RUN \
+    apt-get update && \
+    apt-get install -y --no-install-recommends \
+        supervisor \
+        cron \
+        sudo \
+        libav-tools \
+        libldap2-dev \
+        libxml2-dev \
+        libpng-dev \
+        libcurl4-openssl-dev \
+        libmagickwand-dev \
+        libbz2-dev \
+        icu-devtools \
+        libicu-dev \
+        libmcrypt-dev \
+        libfreetype6-dev \
+        libssl-dev \
+        libjpeg-dev \
+        curl \
+        cron && \
+    apt-get clean && \
+	rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+
+#Dirty hack to circumvent bug in phpize which is open since May 2016
+#Basically the "missing" config.m4 is named "config0.m4"
+#This tries to install zlib and if it doesn't work then rename the file and try again"
+RUN \
+    docker-php-ext-install zlib || \
+    ( mv /usr/src/php/ext/zlib/config0.m4 /usr/src/php/ext/zlib/config.m4 && \
+        docker-php-ext-install zlib )
+
+# See above
+RUN \
+    docker-php-ext-install openssl || \
+    ( mv /usr/src/php/ext/openssl/config0.m4 /usr/src/php/ext/openssl/config.m4 && \
+        docker-php-ext-install openssl )
+
+RUN \
+    docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && \
+    docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \
+    docker-php-ext-install \
+        ldap \
+        ctype \
+        dom \
+        gd \
+        iconv \
+        json \
+        mbstring \
+        xmlwriter \
+        zip \
+        pdo_mysql \
+        curl \
+        bz2 \
+        intl \
+        opcache \
+        mcrypt && \
+    CFLAGS="-I/usr/src/php" docker-php-ext-install xmlreader
+
+RUN \
+    pecl install -o -f redis imagick-beta && \
+    rm -rf /tmp/pear && \
+    docker-php-ext-enable redis imagick
+
+# Activate user-defined .htaccess
+RUN \
+    a2enmod rewrite env
+
+# Add extra configuration to php.ini
+ADD nextcloud_php.ini /usr/local/etc/php/conf.d/nextcloud_php.ini
+
+RUN \
+    curl -o /tmp/nextcloud.tar.bz2 https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2 && \
+    tar xvjf /tmp/nextcloud.tar.bz2 -C /tmp && \
+    rm -rf /var/www/html && \
+    mv /tmp/nextcloud /var/www/html && \
+    chown -R www-data:www-data /var/www/html && \
+    rm /tmp/nextcloud.tar.bz2
+
+# Add supervisor and cron config
+ADD crontab /etc/crontab
+ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
+ADD update-htaccess.sh /update-htaccess.sh
+
+RUN chmod +x /update-htaccess.sh
+
+VOLUME ["/var/www/html/config","/var/www/html/data"]
+
+ENTRYPOINT ["supervisord"]
diff --git a/webservice/crontab b/webservice/crontab
new file mode 100644
index 0000000..2c2e9fb
--- /dev/null
+++ b/webservice/crontab
@@ -0,0 +1,5 @@
+# Running cron.php
+SHELL=/bin/sh
+
+# Run cron.php every 15 minutes
+*/15 * * * * cd /var/www/html && sudo -u www-data php ./cron.php
diff --git a/webservice/nextcloud_php.ini b/webservice/nextcloud_php.ini
new file mode 100644
index 0000000..a1839ee
--- /dev/null
+++ b/webservice/nextcloud_php.ini
@@ -0,0 +1,8 @@
+
+opcache.enable=1
+opcache.enable_cli=1
+opcache.interned_strings_buffer=8
+opcache.max_accelerated_files=10000
+opcache.memory_consumption=128
+opcache.save_comments=1
+opcache.revalidate_freq=1
diff --git a/webservice/supervisord.conf b/webservice/supervisord.conf
new file mode 100644
index 0000000..bafe395
--- /dev/null
+++ b/webservice/supervisord.conf
@@ -0,0 +1,13 @@
+[supervisord]
+nodaemon=true
+
+[program:htaccess-update]
+command=/update-htaccess.sh
+startsecs=0
+
+[program:apache]
+command=apache2-foreground
+
+[program:crond]
+command = cron -f
+startsecs = 5
diff --git a/webservice/update-htaccess.sh b/webservice/update-htaccess.sh
new file mode 100644
index 0000000..c8c814c
--- /dev/null
+++ b/webservice/update-htaccess.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+[ -f "/var/www/html/config/config.php" ] || exit 0
+
+cd /var/www/html
+sudo -u www-data php occ maintenance:update:htaccess