Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/nextcloudpi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authornachoparker <nacho@ownyourbits.com>2017-06-07 05:24:20 +0300
committernachoparker <nacho@ownyourbits.com>2017-06-07 05:59:16 +0300
commit332523b9f91e846c00f6540cfcfdc4d774d9e6a5 (patch)
tree24b54ba1f559d3c68e5317c526db838e483c43ce /docker
parent463eee94d3835bce71dab61c406b6a35ba577798 (diff)
docker container construction
Diffstat (limited to 'docker')
-rw-r--r--docker/lamp.dockerfile27
-rw-r--r--docker/nextcloud.dockerfile20
-rw-r--r--docker/raspbian.dockerfile8
-rwxr-xr-xdocker/run-lamp.sh27
-rwxr-xr-xdocker/run-nc.sh77
-rwxr-xr-xdocker/run-ncdocker.sh7
6 files changed, 166 insertions, 0 deletions
diff --git a/docker/lamp.dockerfile b/docker/lamp.dockerfile
new file mode 100644
index 00000000..051835cf
--- /dev/null
+++ b/docker/lamp.dockerfile
@@ -0,0 +1,27 @@
+# docker run -d -p 443:443 -p 80:80 -v ncdata:/data --name lamp ownyourbits/lamp
+# docker build . -f lamp.dockerfile -t ownyourbits/lamp-arm:latest
+
+FROM ownyourbits/miniraspbian
+
+MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com>
+
+SHELL ["/bin/bash", "-c"]
+
+COPY etc/library.sh lamp.sh /usr/local/etc/
+
+# NOTE: move database to /data, which will be in a persistent volume
+RUN source /usr/local/etc/library.sh; set +x; install_script /usr/local/etc/lamp.sh; \
+ apt-get autoremove -y; apt-get clean; rm /var/lib/apt/lists/* -f; rm -rf /usr/share/man/*; rm -rf /usr/share/doc/*; \
+ mkdir -p /data/; \
+ mv /var/lib/mysql /data/database; \
+ sed -i "s|^datadir.*|datadir = /data/database|" /etc/mysql/mariadb.conf.d/50-server.cnf; \
+ rm /data/database/ib_logfile*; \
+ rm /var/cache/debconf/*-old; \
+ rm /var/log/alternatives.log /var/log/apt/* ; \
+ rm /usr/local/etc/{lamp.sh,library.sh}
+
+COPY docker/run-lamp.sh /usr/local/bin/
+
+ENTRYPOINT ["/usr/local/bin/run.sh"]
+
+EXPOSE 80 443
diff --git a/docker/nextcloud.dockerfile b/docker/nextcloud.dockerfile
new file mode 100644
index 00000000..49d7213e
--- /dev/null
+++ b/docker/nextcloud.dockerfile
@@ -0,0 +1,20 @@
+# docker run -d -p 443:443 -p 80:80 -v ncdata:/data --name nextcloudpi ownyourbits/nextcloudpi
+# docker build . -f nextcloud.dockerfile -t ownyourbits/nextcloudpi:latest
+
+FROM ownyourbits/lamp-arm
+
+MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com>
+
+SHELL ["/bin/bash", "-c"]
+
+COPY etc/library.sh nc-init.sh etc/nextcloudpi-config.d/nc-nextcloud.sh /usr/local/etc/
+
+RUN apt-get update; apt-get install --no-install-recommends -y wget ca-certificates; \
+ source /usr/local/etc/library.sh; set +x; activate_script /usr/local/etc/nc-nextcloud.sh; \
+ apt-get purge -y wget ca-certificates libgnutls-deb0-28 libhogweed2 libicu52 libnettle4 libpsl0; \
+ apt-get autoremove -y; apt-get clean; rm /var/lib/apt/lists/* -f; rm -rf /usr/share/man/*; rm -rf /usr/share/doc/*; \
+ rm /var/log/apt/* ; \
+ rm /var/cache/debconf/*-old; \
+ rm /usr/local/etc/nc-nextcloud.sh
+
+COPY docker/run-nc.sh /usr/local/bin/run.sh
diff --git a/docker/raspbian.dockerfile b/docker/raspbian.dockerfile
new file mode 100644
index 00000000..b626bfdf
--- /dev/null
+++ b/docker/raspbian.dockerfile
@@ -0,0 +1,8 @@
+# docker build . -f Dockerfile.raspbian -t ownyourbits/raspbian:latest
+
+FROM ownyourbits/miniraspbian:raw
+
+MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com>
+
+CMD /bin/bash
+
diff --git a/docker/run-lamp.sh b/docker/run-lamp.sh
new file mode 100755
index 00000000..885b616e
--- /dev/null
+++ b/docker/run-lamp.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+cleanup()
+{
+ apachectl graceful-stop
+ killall php-fpm7.0
+ mysqladmin -u root -pownyourbits shutdown
+ killall cron
+ echo "Cleanup complete"
+}
+
+trap cleanup SIGTERM
+
+echo "Starting PHP-fpm"
+php-fpm7.0 &
+
+echo "Starting Apache"
+/usr/sbin/apache2ctl start
+
+echo "Starting mariaDB"
+mysqld &
+
+echo "Starting cron"
+cron
+
+echo "Done"
+while true; do sleep 0.5; done # do nothing, just wait for trap from 'docker stop'
diff --git a/docker/run-nc.sh b/docker/run-nc.sh
new file mode 100755
index 00000000..013f5d86
--- /dev/null
+++ b/docker/run-nc.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+cleanup()
+{
+ apachectl graceful-stop
+ killall php-fpm7.0
+ mysqladmin -u root -pownyourbits shutdown
+ killall cron
+ echo "Cleanup complete"
+}
+
+trap cleanup SIGTERM
+
+echo "Starting PHP-fpm"
+php-fpm7.0 &
+
+echo "Starting mariaDB"
+mysqld &
+
+# WAIT FOR MARIADB
+while :; do
+ [[ -S /var/run/mysqld/mysqld.sock ]] && break
+ sleep 0.5
+done
+
+## FIRST RUN: initialize NextCloud
+
+test -d /data/app || {
+
+ echo "First run"
+
+ # INIT DATABASE AND NEXTCLOUD CONFIG
+ source /usr/local/etc/library.sh
+ install_script /usr/local/etc/nc-init.sh
+
+ # COPY DATADIR TO /data, WHICH WILL BE IN A PERSISTENT VOLUME
+ cd /var/www/nextcloud/
+ echo "Setting up persistent data dir..."
+ cp -ra /var/www/nextcloud/data /data/app
+ sudo -u www-data php occ config:system:set datadirectory --value=/data/app
+
+ # COPY CONFIG TO /data, WHICH WILL BE IN A PERSISTENT VOLUME
+ echo "Setting up persistent configuration..."
+ test -e /data/config || mv /var/www/nextcloud/config /data
+}
+
+# Use persistent configuration
+test -e /data/config && {
+ rm -rf /var/www/nextcloud/config
+ ln -s /data/config /var/www/nextcloud/config
+}
+
+cd /var/www/nextcloud/
+
+# Trusted Domain ( as an argument )
+[[ "$@" != "" ]] && {
+ IP=$( grep -oP '\d{1,3}(.\d{1,3}){3}' <<< "$1" ) # validate that the first argument is a valid IP
+ if [[ "$IP" != "" ]]; then
+ sudo -u www-data php occ config:system:set trusted_domains 1 --value=$IP
+ else
+ echo "First argument must be an IP address to include as a Trusted domain. Ignoring"
+ fi
+}
+
+# Trusted Domain ( local IP )
+IFACE=$( ip r | grep "default via" | awk '{ print $5 }' )
+IP=$( ip a | grep "global $IFACE" | grep -oP '\d{1,3}(.\d{1,3}){3}' | head -1 )
+sudo -u www-data php occ config:system:set trusted_domains 2 --value=$IP
+
+echo "Starting Apache"
+/usr/sbin/apache2ctl start
+
+echo "Starting cron"
+cron
+
+echo "Done"
+while true; do sleep 0.5; done # do nothing, just wait for trap from 'docker stop'
diff --git a/docker/run-ncdocker.sh b/docker/run-ncdocker.sh
new file mode 100755
index 00000000..d30f07c3
--- /dev/null
+++ b/docker/run-ncdocker.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# Initial Trusted Domain
+IFACE=$( ip r | grep "default via" | awk '{ print $5 }' )
+IP=$( ip a | grep "global $IFACE" | grep -oP '\d{1,3}(.\d{1,3}){3}' | head -1 )
+
+docker run -d -p 443:443 -p 80:80 -v ncdata:/data --name nextcloudpi ownyourbits/nextcloudpi $IP