From d0a839c09db4aab2c63cf832465880da537c9367 Mon Sep 17 00:00:00 2001 From: nachoparker Date: Thu, 21 Sep 2017 18:57:11 +0200 Subject: added docker-x86: nc and ncp for development. Update docker-armhf --- docker/build-container.sh | 38 -------------------------- docker/debian-ncp/Dockerfile | 9 +++++++ docker/debian-ncp/run-parts.sh | 18 +++++++++++++ docker/devel/Dockerfile | 5 +--- docker/lamp/010-lamp-run.sh | 30 ++++++++++++++------- docker/lamp/Dockerfile | 11 ++++---- docker/miniraspbian/Dockerfile | 11 -------- docker/miniraspbian/run-parts.sh | 18 ------------- docker/nextcloud/020-nextcloud-run.sh | 39 +++++++++++---------------- docker/nextcloud/Dockerfile | 26 +++++++----------- docker/nextcloudpi/000-ncp-run.sh | 21 ++------------- docker/nextcloudpi/Dockerfile | 51 +++++++++++++++++++++++++++++++---- docker/run-ncdocker.sh | 7 ----- 13 files changed, 127 insertions(+), 157 deletions(-) delete mode 100644 docker/build-container.sh create mode 100644 docker/debian-ncp/Dockerfile create mode 100755 docker/debian-ncp/run-parts.sh delete mode 100644 docker/miniraspbian/Dockerfile delete mode 100755 docker/miniraspbian/run-parts.sh delete mode 100755 docker/run-ncdocker.sh (limited to 'docker') diff --git a/docker/build-container.sh b/docker/build-container.sh deleted file mode 100644 index 7080ae0b..00000000 --- a/docker/build-container.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Build NextCloudPi ARM docker container in a QEMU Raspbian with docker -# -# Copyleft 2017 by Ignacio Nunez Hernanz -# GPL licensed (see end of file) * Use at your own risk! -# -# Usage: ./installer.sh build-container.sh -# - - -install() -{ - git clone https://github.com/nextcloud/nextcloudpi.git - make -C nextcloudpi - # TODO docker push -} - -configure(){ :; } - -cleanup() { :; } - -# License -# -# This script is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This script is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this script; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA diff --git a/docker/debian-ncp/Dockerfile b/docker/debian-ncp/Dockerfile new file mode 100644 index 00000000..208603ff --- /dev/null +++ b/docker/debian-ncp/Dockerfile @@ -0,0 +1,9 @@ +FROM debian:stretch-slim + +MAINTAINER Ignacio Núñez Hernanz + +CMD /bin/bash + +RUN mkdir -p /etc/services.d + +COPY docker/debian-ncp/run-parts.sh / diff --git a/docker/debian-ncp/run-parts.sh b/docker/debian-ncp/run-parts.sh new file mode 100755 index 00000000..dee4fe61 --- /dev/null +++ b/docker/debian-ncp/run-parts.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +cleanup() +{ + for file in $( ls -1rv /etc/services.d ); do + /etc/services.d/"$file" stop "$1" + done + exit +} + +trap cleanup SIGTERM + +for file in $( ls -1v /etc/services.d ); do + /etc/services.d/"$file" start "$1" +done + +echo "Init done" +while true; do sleep 0.5; done # do nothing, just wait for trap from 'docker stop' diff --git a/docker/devel/Dockerfile b/docker/devel/Dockerfile index af01c876..277d87fa 100644 --- a/docker/devel/Dockerfile +++ b/docker/devel/Dockerfile @@ -1,7 +1,4 @@ -# 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 +FROM ownyourbits/nextcloudpi-x86 MAINTAINER Ignacio Núñez Hernanz diff --git a/docker/lamp/010-lamp-run.sh b/docker/lamp/010-lamp-run.sh index 69d8c13f..9552d848 100755 --- a/docker/lamp/010-lamp-run.sh +++ b/docker/lamp/010-lamp-run.sh @@ -1,16 +1,22 @@ #!/bin/bash +source /usr/local/etc/library.sh + set -e -case "$1" in - stop) - apachectl graceful-stop - killall php-fpm7.0 - mysqladmin -u root shutdown - echo "LAMP cleanup complete" - exit 0 - ;; -esac +[[ "$1" == "stop" ]] && { + echo "Stopping apache" + apachectl graceful-stop + echo "Stopping PHP-fpm" + killall php-fpm7.0 + echo "Stopping mariaDB" + mysqladmin -u root shutdown + echo "LAMP cleanup complete" + exit 0 +} + +# MOVE CONFIGS TO PERSISTENT VOLUME +persistent_cfg /etc/apache2 echo "Starting PHP-fpm" php-fpm7.0 & @@ -21,4 +27,10 @@ echo "Starting Apache" echo "Starting mariaDB" mysqld & +# wait for mariadb +while :; do + [[ -S /var/run/mysqld/mysqld.sock ]] && break + sleep 0.5 +done + exit 0 diff --git a/docker/lamp/Dockerfile b/docker/lamp/Dockerfile index 54b5c666..e6e77b93 100644 --- a/docker/lamp/Dockerfile +++ b/docker/lamp/Dockerfile @@ -1,12 +1,11 @@ -# 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 +FROM ownyourbits/debian-ncp-x86 MAINTAINER Ignacio Núñez Hernanz SHELL ["/bin/bash", "-c"] +ENV DOCKERBUILD 1 + COPY etc/library.sh lamp.sh /usr/local/etc/ RUN \ @@ -32,9 +31,9 @@ rm -f /var/log/alternatives.log /var/log/apt/*; \ # specific cleanup rm /data/database/ib_logfile*; \ -rm /usr/local/etc/{lamp.sh,library.sh} +rm /usr/local/etc/lamp.sh -COPY docker/lamp/010-lamp-run.sh /etc/cont-init.d/ +COPY docker/lamp/010-lamp-run.sh /etc/services.d/ ENTRYPOINT ["/run-parts.sh"] diff --git a/docker/miniraspbian/Dockerfile b/docker/miniraspbian/Dockerfile deleted file mode 100644 index 2eca1bfa..00000000 --- a/docker/miniraspbian/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# docker build . -f Dockerfile.raspbian -t ownyourbits/raspbian:latest - -FROM ownyourbits/miniraspbian:raw - -MAINTAINER Ignacio Núñez Hernanz - -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 deleted file mode 100755 index b4e9f74a..00000000 --- a/docker/miniraspbian/run-parts.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/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/020-nextcloud-run.sh b/docker/nextcloud/020-nextcloud-run.sh index d4a8570c..68114e1a 100755 --- a/docker/nextcloud/020-nextcloud-run.sh +++ b/docker/nextcloud/020-nextcloud-run.sh @@ -1,25 +1,21 @@ #!/bin/bash +source /usr/local/etc/library.sh + 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" +[[ "$1" == "stop" ]] && { + echo "stopping cron..." + killall cron + exit 0 } +echo "Starting cron" +cron + # INIT DATABASE AND NEXTCLOUD CONFIG (first run) test -f /data/app/config/config.php || { echo "Uninitialized instance, running nc-init..." @@ -28,22 +24,19 @@ test -f /data/app/config/config.php || { activate_script nc-init.sh } +# 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 1 --value="$IP" + # 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 + IP=$( grep -oP '\d{1,3}(\.\d{1,3}){3}' <<< "$2" ) # 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" + sudo -u www-data php "$OCC" config:system:set trusted_domains 6 --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 index ba7848e5..d0fda0bb 100644 --- a/docker/nextcloud/Dockerfile +++ b/docker/nextcloud/Dockerfile @@ -1,22 +1,24 @@ -# 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 +FROM ownyourbits/lamp-x86 MAINTAINER Ignacio Núñez Hernanz SHELL ["/bin/bash", "-c"] +ENV DOCKERBUILD 1 + COPY etc/library.sh etc/nextcloudpi-config.d/nc-init.sh etc/nextcloudpi-config.d/nc-nextcloud.sh /usr/local/etc/ RUN \ -# installation +# installation ( /var/www/nextcloud -> /data/app which will be in a volume ) apt-get update; \ -apt-get install --no-install-recommends -y wget ca-certificates iputils-ping; \ +apt-get install --no-install-recommends -y wget ca-certificates sudo; \ source /usr/local/etc/library.sh; \ set +x; \ +install_script /usr/local/etc/nc-nextcloud.sh; \ activate_script /usr/local/etc/nc-nextcloud.sh; \ +mv /var/www/nextcloud /data/app; \ +ln -s /data/app /var/www/nextcloud; \ # package cleanup apt-get autoremove -y; \ @@ -31,14 +33,4 @@ rm -f /var/log/alternatives.log /var/log/apt/*; \ 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/ +COPY docker/nextcloud/020-nextcloud-run.sh /etc/services.d/ diff --git a/docker/nextcloudpi/000-ncp-run.sh b/docker/nextcloudpi/000-ncp-run.sh index d6a2cb49..6a4d2d2e 100755 --- a/docker/nextcloudpi/000-ncp-run.sh +++ b/docker/nextcloudpi/000-ncp-run.sh @@ -1,25 +1,8 @@ #!/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 -} +source /usr/local/etc/library.sh # 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 +persistent_cfg /usr/local/etc/nextcloudpi-config.d /data/ncp exit 0 diff --git a/docker/nextcloudpi/Dockerfile b/docker/nextcloudpi/Dockerfile index 445e6faf..d6baf749 100644 --- a/docker/nextcloudpi/Dockerfile +++ b/docker/nextcloudpi/Dockerfile @@ -1,7 +1,4 @@ -# 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 +FROM ownyourbits/nextcloud-x86 MAINTAINER Ignacio Núñez Hernanz @@ -21,10 +18,54 @@ set +x; \ cd /usr/local/etc/; \ install_script nextcloudpi.sh; \ +# fix default paths +sed -i 's|/media/USBdrive|/data/backups|' nextcloudpi-config.d/nc-backup.sh; \ + # specific cleanup rm /usr/local/etc/nextcloudpi.sh; \ apt-get purge -y wget ca-certificates; \ +# letsencrypt build artifacts cleanup +apt-get purge -y \ + make \ + git \ + augeas-lenses \ + binutils \ + cpp \ + cpp-6 \ + gcc \ + gcc-6 \ + libasan3 \ + libaugeas0 \ + libc-dev-bin \ + libc6-dev \ + libcc1-0 \ + libcilkrts5 \ + libexpat1-dev \ + libffi-dev \ + libgcc-6-dev \ + libgomp1 \ + libisl15 \ + libitm1 \ + liblsan0 \ + libmpc3 \ + libmpx2 \ + libpython-dev \ + libpython2.7-dev \ + libquadmath0 \ + libssl-dev \ + libtsan0 \ + libubsan0 \ + linux-libc-dev \ + python-dev \ + python-virtualenv \ + python2.7-dev \ + python-pkg-resources \ + python3-pkg-resources \ + python3-virtualenv \ + virtualenv \ + python-pip-whl; \ + # package clean up apt-get autoremove -y; \ apt-get clean; \ @@ -34,7 +75,7 @@ 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/ +COPY docker/nextcloudpi/000-ncp-run.sh /etc/services.d/ # 4443 - ncp-web EXPOSE 80 443 4443 diff --git a/docker/run-ncdocker.sh b/docker/run-ncdocker.sh deleted file mode 100755 index f7cb5def..00000000 --- a/docker/run-ncdocker.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/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 -- cgit v1.2.3