commit 9113611283910e627562ee6c42964cdc2cfa488e Author: Valentin Gehrke 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