diff --git a/.travis.yml b/.travis.yml index f27ff93..775f288 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,8 @@ services: matrix: include: - env: TAG=martialblog/limesurvey-apache - script: cd apache; docker build -q -t $TAG . && cd ..; ./tests/run.sh $TAG + script: cd 3.0/apache; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG - env: TAG=martialblog/limesurvey-fpm - script: cd fpm; docker build -q -t $TAG . && cd ..; ./tests/run.sh $TAG + script: cd 3.0/fpm; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG - env: TAG=martialblog/limesurvey-alpine - script: cd fpm; docker build -q -t $TAG . && cd ..; ./tests/run.sh $TAG + script: cd 3.0/fpm; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG diff --git a/apache/Dockerfile b/3.0/apache/Dockerfile similarity index 100% rename from apache/Dockerfile rename to 3.0/apache/Dockerfile diff --git a/apache/entrypoint.sh b/3.0/apache/entrypoint.sh similarity index 100% rename from apache/entrypoint.sh rename to 3.0/apache/entrypoint.sh diff --git a/fpm-alpine/Dockerfile b/3.0/fpm-alpine/Dockerfile similarity index 100% rename from fpm-alpine/Dockerfile rename to 3.0/fpm-alpine/Dockerfile diff --git a/fpm-alpine/entrypoint.sh b/3.0/fpm-alpine/entrypoint.sh similarity index 100% rename from fpm-alpine/entrypoint.sh rename to 3.0/fpm-alpine/entrypoint.sh diff --git a/fpm/Dockerfile b/3.0/fpm/Dockerfile similarity index 100% rename from fpm/Dockerfile rename to 3.0/fpm/Dockerfile diff --git a/fpm/entrypoint.sh b/3.0/fpm/entrypoint.sh similarity index 100% rename from fpm/entrypoint.sh rename to 3.0/fpm/entrypoint.sh diff --git a/4.0/apache/Dockerfile b/4.0/apache/Dockerfile new file mode 100644 index 0000000..b43c5ab --- /dev/null +++ b/4.0/apache/Dockerfile @@ -0,0 +1,72 @@ +FROM php:7.2-apache +LABEL maintainer="markus@martialblog.de" +ARG version='4.0.1+200120' +ARG sha256_checksum='7e4695878a77f4a721f36b66fdd14def1d8b479103b1fceabd3071b2b81b869c' + +# Install OS dependencies +RUN set -ex; \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive \ + apt-get install --no-install-recommends -y \ + \ + libldap2-dev \ + libfreetype6-dev \ + libjpeg-dev \ + zlib1g-dev \ + libc-client-dev \ + libkrb5-dev \ + libpng-dev \ + libpq-dev \ + netcat \ + \ + && apt-get -y autoclean; apt-get -y autoremove; \ + rm -rf /var/lib/apt/lists/* + +# Link LDAP library for PHP ldap extension +RUN set -ex; \ + ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/ + +# Install PHP Plugins and Configure PHP imap plugin +RUN set -ex; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ + docker-php-ext-install -j5 \ + gd \ + imap \ + ldap \ + mbstring \ + pdo \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + zip + +ENV LIMESURVEY_VERSION=$version + +# Apache configuration +RUN a2enmod headers rewrite remoteip; \ + {\ + echo RemoteIPHeader X-Real-IP ;\ + echo RemoteIPTrustedProxy 10.0.0.0/8 ;\ + echo RemoteIPTrustedProxy 172.16.0.0/12 ;\ + echo RemoteIPTrustedProxy 192.168.0.0/16 ;\ + } > /etc/apache2/conf-available/remoteip.conf;\ + a2enconf remoteip + +# Use the default production configuration +RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" + +# Download, unzip and chmod LimeSurvey from official GitHub repository +ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp + +RUN set -ex; \ + echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ + \ + tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ + rm -f "/tmp/${version}.tar.gz" && \ + chown -R www-data:www-data /var/www/html + +COPY entrypoint.sh entrypoint.sh + +ENTRYPOINT ["/var/www/html/entrypoint.sh"] +CMD ["apache2-foreground"] diff --git a/4.0/apache/entrypoint.sh b/4.0/apache/entrypoint.sh new file mode 100755 index 0000000..5f7b9a8 --- /dev/null +++ b/4.0/apache/entrypoint.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Entrypoint for Docker Container + + +DB_TYPE=${DB_TYPE:-'mysql'} +DB_HOST=${DB_HOST:-'mysql'} +DB_PORT=${DB_PORT:-'3306'} +DB_SOCK=${DB_SOCK:-} +DB_NAME=${DB_NAME:-'limesurvey'} +DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'} +DB_USERNAME=${DB_USERNAME:-'limesurvey'} +DB_PASSWORD=${DB_PASSWORD:-} + +ADMIN_USER=${ADMIN_USER:-'admin'} +ADMIN_NAME=${ADMIN_NAME:-'admin'} +ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} +ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} + +PUBLIC_URL=${PUBLIC_URL:-} +URL_FORMAT=${URL_FORMAT:-'path'} + + +# Check if database is available +if [ -z "$DB_SOCK" ]; then + until nc -z -v -w30 $DB_HOST $DB_PORT + do + echo "Info: Waiting for database connection..." + sleep 5 + done +fi + + +# Check if already provisioned +if [ -f application/config/config.php ]; then + echo 'Info: config.php already provisioned' +else + echo 'Info: Generating config.php' + + if [ "$DB_TYPE" = 'mysql' ]; then + echo 'Info: Using MySQL configuration' + DB_CHARSET=${DB_CHARSET:-'utf8mb4'} + cp application/config/config-sample-mysql.php application/config/config.php + fi + + if [ "$DB_TYPE" = 'pgsql' ]; then + echo 'Info: Using PostgreSQL configuration' + DB_CHARSET=${DB_CHARSET:-'utf8'} + cp application/config/config-sample-pgsql.php application/config/config.php + fi + + # Set Database config + if [ ! -z "$DB_SOCK" ]; then + echo 'Info: Using unix socket' + sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php + else + echo 'Info: Using TCP connection' + sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php + fi + + sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php + sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php + sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php + sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php + + # Set URL config + sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php + + # Set Public URL + if [ -z "$PUBLIC_URL" ]; then + echo 'Info: Setting PublicURL' + sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php + fi +fi + + +# Check if LimeSurvey database is provisioned +echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' +php application/commands/console.php updatedb + + +if [ $? -eq 0 ]; then + echo 'Info: Database already provisioned' +else + # Check if DB_PASSWORD is set + if [ -z "$DB_PASSWORD" ]; then + echo >&2 'Error: Missing DB_PASSWORD' + exit 1 + fi + + # Check if DB_PASSWORD is set + if [ -z "$ADMIN_PASSWORD" ]; then + echo >&2 'Error: Missing ADMIN_PASSWORD' + exit 1 + fi + + echo '' + echo 'Running console.php install' + php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL +fi + +exec "$@" diff --git a/4.0/fpm-alpine/Dockerfile b/4.0/fpm-alpine/Dockerfile new file mode 100644 index 0000000..82481a8 --- /dev/null +++ b/4.0/fpm-alpine/Dockerfile @@ -0,0 +1,51 @@ +FROM php:7.2-fpm-alpine +LABEL maintainer="markus@martialblog.de" +ARG version='4.0.1+200120' +ARG sha256_checksum='7e4695878a77f4a721f36b66fdd14def1d8b479103b1fceabd3071b2b81b869c' + +# Install OS dependencies +RUN set -ex; \ + apk add --no-cache --virtual .build-deps \ + freetype-dev \ + libpng-dev \ + libjpeg-turbo-dev \ + openldap-dev \ + imap-dev \ + postgresql-dev && \ + apk add --no-cache netcat-openbsd bash + +# Install PHP Plugins +RUN set -ex; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr ; \ + docker-php-ext-configure imap --with-imap-ssl && \ + docker-php-ext-install \ + gd \ + imap \ + ldap \ + mbstring \ + pdo \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + zip + +# Download, unzip and chmod of LimeSurvey +ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp + +RUN set -ex; \ + echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ + \ + tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ + \ + rm -rf "/tmp/${version}.tar.gz" \ + /var/www/html/docs \ + /var/www/html/tests \ + /var/www/html/*.md && \ + chown -R www-data:root /var/www/ ; \ + chmod -R g=u /var/www + +EXPOSE 9000 + +COPY entrypoint.sh entrypoint.sh +ENTRYPOINT ["/var/www/html/entrypoint.sh"] +CMD ["php-fpm"] diff --git a/4.0/fpm-alpine/entrypoint.sh b/4.0/fpm-alpine/entrypoint.sh new file mode 100755 index 0000000..5f7b9a8 --- /dev/null +++ b/4.0/fpm-alpine/entrypoint.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Entrypoint for Docker Container + + +DB_TYPE=${DB_TYPE:-'mysql'} +DB_HOST=${DB_HOST:-'mysql'} +DB_PORT=${DB_PORT:-'3306'} +DB_SOCK=${DB_SOCK:-} +DB_NAME=${DB_NAME:-'limesurvey'} +DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'} +DB_USERNAME=${DB_USERNAME:-'limesurvey'} +DB_PASSWORD=${DB_PASSWORD:-} + +ADMIN_USER=${ADMIN_USER:-'admin'} +ADMIN_NAME=${ADMIN_NAME:-'admin'} +ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} +ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} + +PUBLIC_URL=${PUBLIC_URL:-} +URL_FORMAT=${URL_FORMAT:-'path'} + + +# Check if database is available +if [ -z "$DB_SOCK" ]; then + until nc -z -v -w30 $DB_HOST $DB_PORT + do + echo "Info: Waiting for database connection..." + sleep 5 + done +fi + + +# Check if already provisioned +if [ -f application/config/config.php ]; then + echo 'Info: config.php already provisioned' +else + echo 'Info: Generating config.php' + + if [ "$DB_TYPE" = 'mysql' ]; then + echo 'Info: Using MySQL configuration' + DB_CHARSET=${DB_CHARSET:-'utf8mb4'} + cp application/config/config-sample-mysql.php application/config/config.php + fi + + if [ "$DB_TYPE" = 'pgsql' ]; then + echo 'Info: Using PostgreSQL configuration' + DB_CHARSET=${DB_CHARSET:-'utf8'} + cp application/config/config-sample-pgsql.php application/config/config.php + fi + + # Set Database config + if [ ! -z "$DB_SOCK" ]; then + echo 'Info: Using unix socket' + sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php + else + echo 'Info: Using TCP connection' + sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php + fi + + sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php + sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php + sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php + sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php + + # Set URL config + sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php + + # Set Public URL + if [ -z "$PUBLIC_URL" ]; then + echo 'Info: Setting PublicURL' + sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php + fi +fi + + +# Check if LimeSurvey database is provisioned +echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' +php application/commands/console.php updatedb + + +if [ $? -eq 0 ]; then + echo 'Info: Database already provisioned' +else + # Check if DB_PASSWORD is set + if [ -z "$DB_PASSWORD" ]; then + echo >&2 'Error: Missing DB_PASSWORD' + exit 1 + fi + + # Check if DB_PASSWORD is set + if [ -z "$ADMIN_PASSWORD" ]; then + echo >&2 'Error: Missing ADMIN_PASSWORD' + exit 1 + fi + + echo '' + echo 'Running console.php install' + php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL +fi + +exec "$@" diff --git a/4.0/fpm/Dockerfile b/4.0/fpm/Dockerfile new file mode 100644 index 0000000..08822a7 --- /dev/null +++ b/4.0/fpm/Dockerfile @@ -0,0 +1,60 @@ +FROM php:7.2-fpm +LABEL maintainer="markus@martialblog.de" +ARG version='4.0.1+200120' +ARG sha256_checksum='7e4695878a77f4a721f36b66fdd14def1d8b479103b1fceabd3071b2b81b869c' + +# Install OS dependencies +RUN set -ex; \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive \ + apt-get install --no-install-recommends -y \ + \ + libldap2-dev \ + libfreetype6-dev \ + libjpeg-dev \ + zlib1g-dev \ + libc-client-dev \ + libkrb5-dev \ + libpng-dev \ + libpq-dev \ + netcat \ + \ + && apt-get -y autoclean; apt-get -y autoremove; \ + rm -rf /var/lib/apt/lists/* + +# Link LDAP library for PHP ldap extension +RUN set -ex; \ + ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/ + +# Install PHP Plugins and Configure PHP imap plugin +RUN set -ex; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ + docker-php-ext-install -j5 \ + gd \ + imap \ + ldap \ + mbstring \ + pdo \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + zip + +ENV LIMESURVEY_VERSION=$version + +# Download, unzip and chmod LimeSurvey from official GitHub repository +ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp + +RUN set -ex; \ + echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ + \ + tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ + rm -f "/tmp/${version}.tar.gz" && \ + chown -R www-data:www-data /var/www/html + +EXPOSE 9000 + +COPY entrypoint.sh entrypoint.sh +ENTRYPOINT ["/var/www/html/entrypoint.sh"] +CMD ["php-fpm"] diff --git a/4.0/fpm/entrypoint.sh b/4.0/fpm/entrypoint.sh new file mode 100755 index 0000000..5f7b9a8 --- /dev/null +++ b/4.0/fpm/entrypoint.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Entrypoint for Docker Container + + +DB_TYPE=${DB_TYPE:-'mysql'} +DB_HOST=${DB_HOST:-'mysql'} +DB_PORT=${DB_PORT:-'3306'} +DB_SOCK=${DB_SOCK:-} +DB_NAME=${DB_NAME:-'limesurvey'} +DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'} +DB_USERNAME=${DB_USERNAME:-'limesurvey'} +DB_PASSWORD=${DB_PASSWORD:-} + +ADMIN_USER=${ADMIN_USER:-'admin'} +ADMIN_NAME=${ADMIN_NAME:-'admin'} +ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} +ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} + +PUBLIC_URL=${PUBLIC_URL:-} +URL_FORMAT=${URL_FORMAT:-'path'} + + +# Check if database is available +if [ -z "$DB_SOCK" ]; then + until nc -z -v -w30 $DB_HOST $DB_PORT + do + echo "Info: Waiting for database connection..." + sleep 5 + done +fi + + +# Check if already provisioned +if [ -f application/config/config.php ]; then + echo 'Info: config.php already provisioned' +else + echo 'Info: Generating config.php' + + if [ "$DB_TYPE" = 'mysql' ]; then + echo 'Info: Using MySQL configuration' + DB_CHARSET=${DB_CHARSET:-'utf8mb4'} + cp application/config/config-sample-mysql.php application/config/config.php + fi + + if [ "$DB_TYPE" = 'pgsql' ]; then + echo 'Info: Using PostgreSQL configuration' + DB_CHARSET=${DB_CHARSET:-'utf8'} + cp application/config/config-sample-pgsql.php application/config/config.php + fi + + # Set Database config + if [ ! -z "$DB_SOCK" ]; then + echo 'Info: Using unix socket' + sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php + else + echo 'Info: Using TCP connection' + sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php + fi + + sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php + sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php + sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php + sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php + + # Set URL config + sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php + + # Set Public URL + if [ -z "$PUBLIC_URL" ]; then + echo 'Info: Setting PublicURL' + sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php + fi +fi + + +# Check if LimeSurvey database is provisioned +echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' +php application/commands/console.php updatedb + + +if [ $? -eq 0 ]; then + echo 'Info: Database already provisioned' +else + # Check if DB_PASSWORD is set + if [ -z "$DB_PASSWORD" ]; then + echo >&2 'Error: Missing DB_PASSWORD' + exit 1 + fi + + # Check if DB_PASSWORD is set + if [ -z "$ADMIN_PASSWORD" ]; then + echo >&2 'Error: Missing ADMIN_PASSWORD' + exit 1 + fi + + echo '' + echo 'Running console.php install' + php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL +fi + +exec "$@" diff --git a/docker-compose.fpm.alpine.yml b/docker-compose.fpm.alpine.yml index 7a7c6e2..bb604c9 100644 --- a/docker-compose.fpm.alpine.yml +++ b/docker-compose.fpm.alpine.yml @@ -2,7 +2,7 @@ version: "3.0" services: limesurvey: build: - context: fpm-alpine/ + context: 4.0/fpm-alpine/ dockerfile: Dockerfile volumes: - /tmp/upload/surveys:/var/www/html/upload/surveys diff --git a/docker-compose.fpm.yml b/docker-compose.fpm.yml index 7dded99..7cdadb0 100644 --- a/docker-compose.fpm.yml +++ b/docker-compose.fpm.yml @@ -2,7 +2,7 @@ version: "3.0" services: limesurvey: build: - context: fpm/ + context: 4.0/fpm/ dockerfile: Dockerfile volumes: - /tmp/upload/surveys:/var/www/html/upload/surveys diff --git a/docker-compose.pgsql.yml b/docker-compose.pgsql.yml index 0ca7ad9..3218caa 100644 --- a/docker-compose.pgsql.yml +++ b/docker-compose.pgsql.yml @@ -2,7 +2,7 @@ version: "3.0" services: limesurvey: build: - context: apache/ + context: 4.0/apache/ dockerfile: Dockerfile volumes: - /tmp/upload/surveys:/var/www/html/upload/surveys diff --git a/docker-compose.yml b/docker-compose.yml index e606fcd..fdab987 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.0" services: limesurvey: build: - context: apache/ + context: 4.0/apache/ dockerfile: Dockerfile volumes: - /tmp/upload/surveys:/var/www/html/upload/surveys diff --git a/makefile b/makefile index 2d804b7..e1bb333 100644 --- a/makefile +++ b/makefile @@ -1,8 +1,14 @@ .PHONY: apache fpm fpm-alpine apache: - docker build --pull -t limesurvey:apache apache + docker build --pull -t limesurvey:apache 3.0/apache +apache4: + docker build --pull -t limesurvey:apache 4.0/apache fpm-alpine: - docker build --pull -t limesurvey:fpm-alpine fpm-alpine + docker build --pull -t limesurvey:fpm-alpine 3.0/fpm-alpine +fpm-alpine4: + docker build --pull -t limesurvey:fpm-alpine 4.0/fpm-alpine fpm: - docker build --pull -t limesurvey:fpm fpm + docker build --pull -t limesurvey:fpm 3.0/fpm +fpm4: + docker build --pull -t limesurvey:fpm 4.0/fpm diff --git a/upgrade.sh b/upgrade.sh index fc8f1b6..3b38c7c 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -6,13 +6,14 @@ set -x if [ $# -eq 0 ] then echo 'Pass new LimeSurvey Version tag:' - echo 'upgrade.sh 3.15.8+190130' + echo '> upgrade.sh 3.15.8+190130' exit 1 fi NEW_VERSION=$1 +MAJOR_VERSION=$(echo $NEW_VERSION | cut -c 1 | awk '{print $1".0"}') -grep -qc $NEW_VERSION apache/Dockerfile fpm/Dockerfile fpm-alpine/Dockerfile +grep -qc $NEW_VERSION $MAJOR_VERSION/apache/Dockerfile $MAJOR_VERSION/fpm/Dockerfile $MAJOR_VERSION/fpm-alpine/Dockerfile if [ $? -eq 0 ] then @@ -26,7 +27,7 @@ wget -P /tmp "https://github.com/LimeSurvey/LimeSurvey/archive/${NEW_VERSION}.ta SHA256_CHECKSUM=$(sha256sum "/tmp/${NEW_VERSION}.tar.gz" | awk '{ print $1 }') # Update lines in the files -sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" apache/Dockerfile fpm/Dockerfile fpm-alpine/Dockerfile -sed -r -i -e "s/[A-Fa-f0-9]{64}/$SHA256_CHECKSUM/" apache/Dockerfile fpm/Dockerfile fpm-alpine/Dockerfile +sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" $MAJOR_VERSION/apache/Dockerfile $MAJOR_VERSION/fpm/Dockerfile $MAJOR_VERSION/fpm-alpine/Dockerfile +sed -r -i -e "s/[A-Fa-f0-9]{64}/$SHA256_CHECKSUM/" $MAJOR_VERSION/apache/Dockerfile $MAJOR_VERSION/fpm/Dockerfile $MAJOR_VERSION/fpm-alpine/Dockerfile # After that, check and commit