diff --git a/8.0/apache/Dockerfile b/8.0/apache/Dockerfile index 616a770..15e110f 100644 --- a/8.0/apache/Dockerfile +++ b/8.0/apache/Dockerfile @@ -6,18 +6,17 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -29,13 +28,13 @@ RUN { \ echo 'opcache.fast_shutdown=1'; \ echo 'opcache.enable_cli=1'; \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini +RUN a2enmod rewrite # PECL extensions -RUN pecl install APCu-4.0.10 \ +RUN set -ex \ + && pecl install APCu-4.0.10 \ && docker-php-ext-enable apcu -RUN a2enmod rewrite - ENV OWNCLOUD_VERSION 8.0.13 VOLUME /var/www/html diff --git a/8.0/fpm/Dockerfile b/8.0/fpm/Dockerfile index 597ff35..384d8ce 100644 --- a/8.0/fpm/Dockerfile +++ b/8.0/fpm/Dockerfile @@ -6,17 +6,17 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -30,7 +30,8 @@ RUN { \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini # PECL extensions -RUN pecl install APCu-4.0.10 \ +RUN set -ex \ + && pecl install APCu-4.0.10 \ && docker-php-ext-enable apcu ENV OWNCLOUD_VERSION 8.0.13 diff --git a/8.1/apache/Dockerfile b/8.1/apache/Dockerfile index 9141a16..836e5c9 100644 --- a/8.1/apache/Dockerfile +++ b/8.1/apache/Dockerfile @@ -6,19 +6,18 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libmemcached-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -30,15 +29,14 @@ RUN { \ echo 'opcache.fast_shutdown=1'; \ echo 'opcache.enable_cli=1'; \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini +RUN a2enmod rewrite # PECL extensions RUN set -ex \ && pecl install APCu-4.0.10 \ && pecl install memcached-2.2.0 \ && pecl install redis-2.2.8 \ - && docker-php-ext-enable apcu redis memcached - -RUN a2enmod rewrite + && docker-php-ext-enable apcu memcached redis ENV OWNCLOUD_VERSION 8.1.8 VOLUME /var/www/html diff --git a/8.1/fpm/Dockerfile b/8.1/fpm/Dockerfile index 9cf5a16..c3ba02a 100644 --- a/8.1/fpm/Dockerfile +++ b/8.1/fpm/Dockerfile @@ -6,19 +6,18 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libmemcached-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -36,7 +35,7 @@ RUN set -ex \ && pecl install APCu-4.0.10 \ && pecl install memcached-2.2.0 \ && pecl install redis-2.2.8 \ - && docker-php-ext-enable apcu redis memcached + && docker-php-ext-enable apcu memcached redis ENV OWNCLOUD_VERSION 8.1.8 VOLUME /var/www/html diff --git a/8.2/apache/Dockerfile b/8.2/apache/Dockerfile index f6754b5..d9ba067 100644 --- a/8.2/apache/Dockerfile +++ b/8.2/apache/Dockerfile @@ -6,19 +6,18 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libmemcached-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -30,15 +29,14 @@ RUN { \ echo 'opcache.fast_shutdown=1'; \ echo 'opcache.enable_cli=1'; \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini +RUN a2enmod rewrite # PECL extensions RUN set -ex \ && pecl install APCu-4.0.10 \ && pecl install memcached-2.2.0 \ && pecl install redis-2.2.8 \ - && docker-php-ext-enable apcu redis memcached - -RUN a2enmod rewrite + && docker-php-ext-enable apcu memcached redis ENV OWNCLOUD_VERSION 8.2.6 VOLUME /var/www/html diff --git a/8.2/fpm/Dockerfile b/8.2/fpm/Dockerfile index e42f374..7f054d1 100644 --- a/8.2/fpm/Dockerfile +++ b/8.2/fpm/Dockerfile @@ -6,19 +6,18 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libmemcached-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -36,7 +35,7 @@ RUN set -ex \ && pecl install APCu-4.0.10 \ && pecl install memcached-2.2.0 \ && pecl install redis-2.2.8 \ - && docker-php-ext-enable apcu redis memcached + && docker-php-ext-enable apcu memcached redis ENV OWNCLOUD_VERSION 8.2.6 VOLUME /var/www/html diff --git a/9.0/apache/Dockerfile b/9.0/apache/Dockerfile index 0555bae..682f777 100644 --- a/9.0/apache/Dockerfile +++ b/9.0/apache/Dockerfile @@ -6,19 +6,18 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libmemcached-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -30,15 +29,14 @@ RUN { \ echo 'opcache.fast_shutdown=1'; \ echo 'opcache.enable_cli=1'; \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini +RUN a2enmod rewrite # PECL extensions RUN set -ex \ && pecl install APCu-4.0.10 \ && pecl install memcached-2.2.0 \ && pecl install redis-2.2.8 \ - && docker-php-ext-enable apcu redis memcached - -RUN a2enmod rewrite + && docker-php-ext-enable apcu memcached redis ENV OWNCLOUD_VERSION 9.0.3 VOLUME /var/www/html diff --git a/9.0/fpm/Dockerfile b/9.0/fpm/Dockerfile index e52036c..9d6c8f5 100644 --- a/9.0/fpm/Dockerfile +++ b/9.0/fpm/Dockerfile @@ -6,19 +6,18 @@ RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ + libldap2-dev \ libmcrypt-dev \ libmemcached-dev \ libpng12-dev \ libpq-dev \ libxml2-dev \ - libldap2-dev \ && rm -rf /var/lib/apt/lists/* # https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install gd exif intl mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip ldap - + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php @@ -36,7 +35,7 @@ RUN set -ex \ && pecl install APCu-4.0.10 \ && pecl install memcached-2.2.0 \ && pecl install redis-2.2.8 \ - && docker-php-ext-enable apcu redis memcached + && docker-php-ext-enable apcu memcached redis ENV OWNCLOUD_VERSION 9.0.3 VOLUME /var/www/html diff --git a/Dockerfile.template b/Dockerfile.template new file mode 100644 index 0000000..1aea189 --- /dev/null +++ b/Dockerfile.template @@ -0,0 +1,59 @@ +FROM php:5.6-%%VARIANT%% + +RUN apt-get update && apt-get install -y \ + bzip2 \ + libcurl4-openssl-dev \ + libfreetype6-dev \ + libicu-dev \ + libjpeg-dev \ + libldap2-dev \ + libmcrypt-dev \ + libmemcached-dev \ + libpng12-dev \ + libpq-dev \ + libxml2-dev \ + && rm -rf /var/lib/apt/lists/* + +# https://doc.owncloud.org/server/8.1/admin_manual/installation/source_installation.html#prerequisites +RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ + && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ + && docker-php-ext-install exif gd intl ldap mbstring mcrypt mysql opcache pdo_mysql pdo_pgsql pgsql zip + +# set recommended PHP.ini settings +# see https://secure.php.net/manual/en/opcache.installation.php +RUN { \ + echo 'opcache.memory_consumption=128'; \ + echo 'opcache.interned_strings_buffer=8'; \ + echo 'opcache.max_accelerated_files=4000'; \ + echo 'opcache.revalidate_freq=60'; \ + echo 'opcache.fast_shutdown=1'; \ + echo 'opcache.enable_cli=1'; \ + } > /usr/local/etc/php/conf.d/opcache-recommended.ini +RUN a2enmod rewrite + +# PECL extensions +RUN set -ex \ + && pecl install APCu-4.0.10 \ + && pecl install memcached-2.2.0 \ + && pecl install redis-2.2.8 \ + && docker-php-ext-enable apcu memcached redis + +ENV OWNCLOUD_VERSION %%VERSION%% +VOLUME /var/www/html + +RUN curl -fsSL -o owncloud.tar.bz2 \ + "https://download.owncloud.org/community/owncloud-${OWNCLOUD_VERSION}.tar.bz2" \ + && curl -fsSL -o owncloud.tar.bz2.asc \ + "https://download.owncloud.org/community/owncloud-${OWNCLOUD_VERSION}.tar.bz2.asc" \ + && export GNUPGHOME="$(mktemp -d)" \ +# gpg key from https://owncloud.org/owncloud.asc + && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys E3036906AD9F30807351FAC32D5D5E97F6978A26 \ + && gpg --batch --verify owncloud.tar.bz2.asc owncloud.tar.bz2 \ + && rm -r "$GNUPGHOME" owncloud.tar.bz2.asc \ + && tar -xjf owncloud.tar.bz2 -C /usr/src/ \ + && rm owncloud.tar.bz2 + +COPY docker-entrypoint.sh /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["%%CMD%%"] diff --git a/update.sh b/update.sh index 42656cc..f91d8c4 100755 --- a/update.sh +++ b/update.sh @@ -1,6 +1,14 @@ #!/bin/bash set -e +declare -A unsupportedModules=( + [8.0]='memcached redis' +) +declare -A cmd=( + [apache]='apache2-foreground' + [fpm]='php-fpm' +) + cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" #Supported Versions found from Production Channel https://owncloud.org/release-channels/ versions=( "$@" ) @@ -9,12 +17,32 @@ if [ ${#versions[@]} -eq 0 ]; then fi versions=( "${versions[@]%/}" ) - travisEnv= for version in "${versions[@]}"; do latest=$(curl -sSL 'https://owncloud.org/changelog/' |tac|tac| grep -o -m 1 "\(Version\|Release\) ${version}.[[:digit:]]\+" | sed -rn 's/(Version|Release) (.*)/\2/p') + for variant in apache fpm; do - sed -ri -e 's/^(ENV OWNCLOUD_VERSION) .*/\1 '"$latest"'/' "$version/$variant/Dockerfile" + cp Dockerfile.template "$version/$variant/Dockerfile" + + sed -ri -e ' + s/%%VARIANT%%/'"$variant"'/; + s/%%VERSION%%/'"$latest"'/; + s/%%CMD%%/'"${cmd[$variant]}"'/; + ' "$version/$variant/Dockerfile" + + # TODO remove hacky unsupportedModules list when 8.0 is eol + for mod in ${unsupportedModules[$version]}; do + sed -ri -e ' + /pecl install '"$mod"'/Id; + /lib'"$mod"'/Id; + s/(docker-php-ext-enable.*) '"$mod"'/\1/; + ' "$version/$variant/Dockerfile" + done + + if [ "$variant" = 'fpm' ]; then + sed -ri -e '/a2enmod/d' "$version/$variant/Dockerfile" + fi + travisEnv='\n - VERSION='"$version"' VARIANT='"$variant$travisEnv" done done