diff options
author | nachoparker <nacho@ownyourbits.com> | 2017-06-07 05:24:20 +0300 |
---|---|---|
committer | nachoparker <nacho@ownyourbits.com> | 2017-06-07 05:59:16 +0300 |
commit | 332523b9f91e846c00f6540cfcfdc4d774d9e6a5 (patch) | |
tree | 24b54ba1f559d3c68e5317c526db838e483c43ce /docker | |
parent | 463eee94d3835bce71dab61c406b6a35ba577798 (diff) |
docker container construction
Diffstat (limited to 'docker')
-rw-r--r-- | docker/lamp.dockerfile | 27 | ||||
-rw-r--r-- | docker/nextcloud.dockerfile | 20 | ||||
-rw-r--r-- | docker/raspbian.dockerfile | 8 | ||||
-rwxr-xr-x | docker/run-lamp.sh | 27 | ||||
-rwxr-xr-x | docker/run-nc.sh | 77 | ||||
-rwxr-xr-x | docker/run-ncdocker.sh | 7 |
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 |