diff options
author | nachoparker <nacho@ownyourbits.com> | 2017-09-21 19:19:35 +0300 |
---|---|---|
committer | nachoparker <nacho@ownyourbits.com> | 2017-09-21 23:20:46 +0300 |
commit | acbe26cc141cea7d6f9b139ddd1211b44403a2ac (patch) | |
tree | fe1f55dd8913195f978a7532e2318167f03c2b95 /docker | |
parent | 786728c2ec50cd0bbafdaefec2d64cad9df48f0f (diff) |
docker: updated to stretch and added NextCloudPi layer
Diffstat (limited to 'docker')
-rw-r--r-- | docker/devel/Dockerfile | 35 | ||||
-rw-r--r-- | docker/lamp.dockerfile | 27 | ||||
-rwxr-xr-x | docker/lamp/010-lamp-run.sh | 24 | ||||
-rw-r--r-- | docker/lamp/Dockerfile | 41 | ||||
-rw-r--r-- | docker/miniraspbian/Dockerfile (renamed from docker/raspbian.dockerfile) | 3 | ||||
-rwxr-xr-x | docker/miniraspbian/run-parts.sh | 18 | ||||
-rw-r--r-- | docker/nextcloud.dockerfile | 20 | ||||
-rwxr-xr-x | docker/nextcloud/020-nextcloud-run.sh | 49 | ||||
-rw-r--r-- | docker/nextcloud/Dockerfile | 44 | ||||
-rwxr-xr-x | docker/nextcloudpi/000-ncp-run.sh | 25 | ||||
-rw-r--r-- | docker/nextcloudpi/Dockerfile | 40 | ||||
-rwxr-xr-x | docker/run-lamp.sh | 27 | ||||
-rwxr-xr-x | docker/run-nc.sh | 77 |
13 files changed, 279 insertions, 151 deletions
diff --git a/docker/devel/Dockerfile b/docker/devel/Dockerfile new file mode 100644 index 00000000..af01c876 --- /dev/null +++ b/docker/devel/Dockerfile @@ -0,0 +1,35 @@ +# docker run -d -p 4443:4443 -p 443:443 -p 80:80 -v ncdata:/data --name nextcloudpi ownyourbits/nextcloudpi:devel +# docker build . -f docker/devel/Dockerfile -t ownyourbits/nextcloudpi:devel + +FROM ownyourbits/nextcloud + +MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com> + +SHELL ["/bin/bash", "-c"] + +ENV DOCKERBUILD 1 + +COPY build-devel.sh /usr/local/etc/ + +RUN \ +apt-get update; \ +apt-get install --no-install-recommends -y wget ca-certificates git; \ + +# install nextcloudpi devel +source /usr/local/etc/library.sh; \ +set +x; \ +cd /usr/local/etc/; \ +install_script build-devel.sh; \ + +# specific cleanup +rm /usr/local/etc/build-devel.sh; \ +apt-get purge -y wget ca-certificates git; \ + +# package clean up +apt-get autoremove -y; \ +apt-get clean; \ +rm -f /var/lib/apt/lists/*; \ +rm -rf /usr/share/man/*; \ +rm -rf /usr/share/doc/*; \ +rm -f /var/log/alternatives.log /var/log/apt/*; \ +rm /var/cache/debconf/*-old; diff --git a/docker/lamp.dockerfile b/docker/lamp.dockerfile deleted file mode 100644 index 051835cf..00000000 --- a/docker/lamp.dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -# 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/lamp/010-lamp-run.sh b/docker/lamp/010-lamp-run.sh new file mode 100755 index 00000000..69d8c13f --- /dev/null +++ b/docker/lamp/010-lamp-run.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -e + +case "$1" in + stop) + apachectl graceful-stop + killall php-fpm7.0 + mysqladmin -u root shutdown + echo "LAMP cleanup complete" + exit 0 + ;; +esac + +echo "Starting PHP-fpm" +php-fpm7.0 & + +echo "Starting Apache" +/usr/sbin/apache2ctl start + +echo "Starting mariaDB" +mysqld & + +exit 0 diff --git a/docker/lamp/Dockerfile b/docker/lamp/Dockerfile new file mode 100644 index 00000000..54b5c666 --- /dev/null +++ b/docker/lamp/Dockerfile @@ -0,0 +1,41 @@ +# 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/ + +RUN \ + +# installation +source /usr/local/etc/library.sh; \ +set +x; \ +install_script /usr/local/etc/lamp.sh; \ + +# mariaDB fixups (move database to /data, which will be in a persistent volume) +mkdir -p /data/; \ +mv /var/lib/mysql /data/database; \ +sed -i "s|^datadir.*|datadir = /data/database|" /etc/mysql/mariadb.conf.d/50-server.cnf; \ + +# package cleanup +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/cache/debconf/*-old; \ +rm -f /var/log/alternatives.log /var/log/apt/*; \ + +# specific cleanup +rm /data/database/ib_logfile*; \ +rm /usr/local/etc/{lamp.sh,library.sh} + +COPY docker/lamp/010-lamp-run.sh /etc/cont-init.d/ + +ENTRYPOINT ["/run-parts.sh"] + +EXPOSE 80 443 diff --git a/docker/raspbian.dockerfile b/docker/miniraspbian/Dockerfile index b626bfdf..2eca1bfa 100644 --- a/docker/raspbian.dockerfile +++ b/docker/miniraspbian/Dockerfile @@ -6,3 +6,6 @@ MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com> CMD /bin/bash +RUN mkdir -p /etc/cont-init.d + +COPY docker/miniraspbian/run-parts.sh / diff --git a/docker/miniraspbian/run-parts.sh b/docker/miniraspbian/run-parts.sh new file mode 100755 index 00000000..b4e9f74a --- /dev/null +++ b/docker/miniraspbian/run-parts.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +cleanup() +{ + for file in $( ls -1rv /etc/cont-init.d ); do + /etc/cont-init.d/$file stop + done + exit +} + +trap cleanup SIGTERM + +for file in $( ls -1v /etc/cont-init.d ); do + /etc/cont-init.d/$file start +done + +echo "Init done" +while true; do sleep 0.5; done # do nothing, just wait for trap from 'docker stop' diff --git a/docker/nextcloud.dockerfile b/docker/nextcloud.dockerfile deleted file mode 100644 index 1d24d6b9..00000000 --- a/docker/nextcloud.dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -# 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 etc/nextcloudpi-config.d/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/nextcloud/020-nextcloud-run.sh b/docker/nextcloud/020-nextcloud-run.sh new file mode 100755 index 00000000..d4a8570c --- /dev/null +++ b/docker/nextcloud/020-nextcloud-run.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +set -e + +NCDIR=/var/www/nextcloud +OCC="$NCDIR/occ" + +case "$1" in + stop) + echo "stopping cron..." + killall cron + exit 0 + ;; +esac + +# COPY NEXTCLOUD TO /data, WHICH WILL BE IN A PERSISTENT VOLUME (first run) +test -d /data/app || { + echo "Setting up persistent Nextcloud dir..." + mv "$NCDIR" /data/app + ln -s /data/app "$NCDIR" +} + +# INIT DATABASE AND NEXTCLOUD CONFIG (first run) +test -f /data/app/config/config.php || { + echo "Uninitialized instance, running nc-init..." + source /usr/local/etc/library.sh + cd /usr/local/etc/ + activate_script nc-init.sh +} + +# 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 cron" +cron + +exit 0 diff --git a/docker/nextcloud/Dockerfile b/docker/nextcloud/Dockerfile new file mode 100644 index 00000000..ba7848e5 --- /dev/null +++ b/docker/nextcloud/Dockerfile @@ -0,0 +1,44 @@ +# docker run -d -p 443:443 -p 80:80 -v ncdata:/data --name nextcloud ownyourbits/nextcloud +# docker build . -f nextcloud.dockerfile -t ownyourbits/nextcloud:latest + +FROM ownyourbits/lamp-arm + +MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com> + +SHELL ["/bin/bash", "-c"] + +COPY etc/library.sh etc/nextcloudpi-config.d/nc-init.sh etc/nextcloudpi-config.d/nc-nextcloud.sh /usr/local/etc/ + +RUN \ + +# installation +apt-get update; \ +apt-get install --no-install-recommends -y wget ca-certificates iputils-ping; \ +source /usr/local/etc/library.sh; \ +set +x; \ +activate_script /usr/local/etc/nc-nextcloud.sh; \ + +# package cleanup +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/cache/debconf/*-old; \ +rm -f /var/log/alternatives.log /var/log/apt/*; \ + +# specific cleanup +apt-get purge -y wget ca-certificates; \ +rm /usr/local/etc/nc-nextcloud.sh + +# TODO install make in noip: + +# TODO consider pre-populating /data (volume overcopies) +# TODO call cleanup() hooks for extras +# TODO remove packages unneeded from lamp, wget... +# # libudev1 util-linux +# TODO remove mariadb client (reinstall mysqldump later, but that only) +# apt-get purge -y wget ca-certificates libhogweed4 libnettle4 libpsl5 +# apt-get purge -y wget ca-certificates libgnutls-deb0-28 libhogweed2 libicu52 libnettle4 libpsl0 + +COPY docker/nextcloud/020-nextcloud-run.sh /etc/cont-init.d/ diff --git a/docker/nextcloudpi/000-ncp-run.sh b/docker/nextcloudpi/000-ncp-run.sh new file mode 100755 index 00000000..d6a2cb49 --- /dev/null +++ b/docker/nextcloudpi/000-ncp-run.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +NCDIR=/var/www/nextcloud +OCC="$NCDIR/occ" + +# INIT SYSTEM CONFIG (first run) +test -d /data/etc || { + echo "Setting up system dir..." + #mv /etc /data/etc + #ln -s /data/etc /etc +} + +# INIT NCP CONFIG (first run) +test -d /data/ncp || { + echo "Setting up ncp dir..." + mv /usr/local/etc/ /data/ncp + ln -s /data/ncp /usr/local/etc +} + +# NC-INIT TODO copy all nextcloud folder? +# INIT DATABASE AND NEXTCLOUD CONFIG + #source /usr/local/etc/library.sh + #activate_script /usr/local/etc/nextcloudpi-config.d/nc-init.sh + +exit 0 diff --git a/docker/nextcloudpi/Dockerfile b/docker/nextcloudpi/Dockerfile new file mode 100644 index 00000000..445e6faf --- /dev/null +++ b/docker/nextcloudpi/Dockerfile @@ -0,0 +1,40 @@ +# docker run -d -p 4443:4443 -p 443:443 -p 80:80 -v ncdata:/data --name nextcloudpi ownyourbits/nextcloudpi +# docker build . -f nextcloud.dockerfile -t ownyourbits/nextcloudpi:latest + +FROM ownyourbits/nextcloudpi + +MAINTAINER Ignacio Núñez Hernanz <nacho@ownyourbits.com> + +SHELL ["/bin/bash", "-c"] + +ENV DOCKERBUILD 1 + +COPY nextcloudpi.sh /usr/local/etc/ + +RUN \ +apt-get update; \ +apt-get install --no-install-recommends -y wget ca-certificates; \ + +# install nextcloudpi +source /usr/local/etc/library.sh; \ +set +x; \ +cd /usr/local/etc/; \ +install_script nextcloudpi.sh; \ + +# specific cleanup +rm /usr/local/etc/nextcloudpi.sh; \ +apt-get purge -y wget ca-certificates; \ + +# package clean up +apt-get autoremove -y; \ +apt-get clean; \ +rm -f /var/lib/apt/lists/*; \ +rm -rf /usr/share/man/*; \ +rm -rf /usr/share/doc/*; \ +rm -f /var/log/alternatives.log /var/log/apt/*; \ +rm /var/cache/debconf/*-old; + +COPY docker/nextcloudpi/000-ncp-run.sh /etc/cont-init.d/ + +# 4443 - ncp-web +EXPOSE 80 443 4443 diff --git a/docker/run-lamp.sh b/docker/run-lamp.sh deleted file mode 100755 index 885b616e..00000000 --- a/docker/run-lamp.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/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 deleted file mode 100755 index 86716b64..00000000 --- a/docker/run-nc.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -NCDIR=/var/www/nextcloud -OCC="$NCDIR/occ" - -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 - activate_script /usr/local/etc/nextcloudpi-config.d/nc-init.sh - - # COPY DATADIR TO /data, WHICH WILL BE IN A PERSISTENT VOLUME - echo "Setting up persistent data dir..." - cp -ra /"$NCDIR"/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 /"$NCDIR"/config /data -} - -# Use persistent configuration -test -e /data/config && { - rm -rf /"$NCDIR"/config - ln -s /data/config /"$NCDIR"/config -} - -# 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' |