diff --git a/.travis.yml b/.travis.yml index 77fc2ce0..020802c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ python: env: matrix: - DB=mysql:latest - - DB=mariadb:10.2 + - DB=mariadb:latest before_install: - export TESTSUITE_PASSWORD=`openssl rand -base64 30` @@ -19,7 +19,7 @@ install: script: # Build image - - docker build -t phpmyadmin/phpmyadmin . + - docker build -t phpmyadmin/phpmyadmin apache # Test for single database - docker run --name testadmin -d --link db_server:db -p 9090:80 phpmyadmin/phpmyadmin - ./testing/test-docker.sh testadmin 9090 @@ -37,5 +37,6 @@ script: - ./testing/test-docker.sh phpmyadmin 8080 db_server - docker-compose stop # Run tests in testing container - - docker-compose -f docker-compose.testing.yml up -d phpmyadmin - - ./testing/wait-for-testing.sh + - docker-compose -f docker-compose.testing.yml up -d db_server + - docker-compose -f docker-compose.testing.yml up -d + - docker-compose exec phpmyadmin /test-docker.sh phpmyadmin_testing 80 phpmyadmin_testing_db diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template new file mode 100644 index 00000000..bd07759a --- /dev/null +++ b/Dockerfile-alpine.template @@ -0,0 +1,71 @@ +FROM php:7.2-%%VARIANT%% + +# docker-entrypoint.sh dependencies +RUN apk add --no-cache \ + bash + +# Install dependencies +RUN set -ex; \ + \ + apk add --no-cache --virtual .build-deps \ + bzip2-dev \ + freetype-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libxpm-dev \ + ; \ + \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr; \ + docker-php-ext-install bz2 gd mysqli opcache zip; \ + \ + runDeps="$( \ + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ + )"; \ + apk add --virtual .phpmyadmin-phpexts-rundeps $runDeps; \ + apk del .build-deps + +# Calculate download URL +ENV VERSION 4.8.5 +ENV URL https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.xz +LABEL version=$VERSION + +# Download tarball, verify it using gpg and extract +RUN set -ex; \ + apk add --no-cache --virtual .fetch-deps \ + gnupg \ + ; \ + \ + export GNUPGHOME="$(mktemp -d)"; \ + export GPGKEY="3D06A59ECE730EB71B511C17CE752F178259BD92"; \ + curl --output phpMyAdmin.tar.xz --location $URL; \ + curl --output phpMyAdmin.tar.xz.asc --location $URL.asc; \ + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver ipv4.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keys.gnupg.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver pgp.mit.edu --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keyserver.pgp.com --recv-keys "$GPGKEY"; \ + gpg --batch --verify phpMyAdmin.tar.xz.asc phpMyAdmin.tar.xz; \ + tar -xf phpMyAdmin.tar.xz -C /usr/src; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" phpMyAdmin.tar.xz phpMyAdmin.tar.xz.asc; \ + mv /usr/src/phpMyAdmin-$VERSION-all-languages /usr/src/phpmyadmin; \ + rm -rf /usr/src/phpmyadmin/setup/ /usr/src/phpmyadmin/examples/ /usr/src/phpmyadmin/test/ /usr/src/phpmyadmin/po/ /usr/src/phpmyadmin/composer.json /usr/src/phpmyadmin/RELEASE-DATE-$VERSION; \ + sed -i "s@define('CONFIG_DIR'.*@define('CONFIG_DIR', '/etc/phpmyadmin/');@" /usr/src/phpmyadmin/libraries/vendor_config.php; \ +# Add directory for sessions to allow session persistence + mkdir /sessions; \ + mkdir -p /var/nginx/client_body_temp; \ + apk del .fetch-deps + +# Copy configuration +COPY config.inc.php /etc/phpmyadmin/config.inc.php +COPY php.ini /usr/local/etc/php/conf.d/php-phpmyadmin.ini + +# Copy main script +COPY docker-entrypoint.sh /docker-entrypoint.sh + +ENTRYPOINT [ "/docker-entrypoint.sh" ] +CMD ["%%CMD%%"] diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template new file mode 100644 index 00000000..64b79adb --- /dev/null +++ b/Dockerfile-debian.template @@ -0,0 +1,79 @@ +FROM php:7.2-%%VARIANT%% + +# Install dependencies +RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libbz2-dev \ + libfreetype6-dev \ + libjpeg-dev \ + libpng-dev \ + libwebp-dev \ + libxpm-dev \ + ; \ + \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr; \ + docker-php-ext-install bz2 gd mysqli opcache zip; \ + \ + apt-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/* + +# Calculate download URL +ENV VERSION 4.8.5 +ENV URL https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.xz +LABEL version=$VERSION + +# Download tarball, verify it using gpg and extract +RUN set -ex; \ + fetchDeps=" \ + gnupg \ + dirmngr \ + "; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + \ + export GNUPGHOME="$(mktemp -d)"; \ + export GPGKEY="3D06A59ECE730EB71B511C17CE752F178259BD92"; \ + curl --output phpMyAdmin.tar.xz --location $URL; \ + curl --output phpMyAdmin.tar.xz.asc --location $URL.asc; \ + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver ipv4.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keys.gnupg.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver pgp.mit.edu --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keyserver.pgp.com --recv-keys "$GPGKEY"; \ + gpg --batch --verify phpMyAdmin.tar.xz.asc phpMyAdmin.tar.xz; \ + tar -xf phpMyAdmin.tar.xz -C /usr/src; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" phpMyAdmin.tar.xz phpMyAdmin.tar.xz.asc; \ + mv /usr/src/phpMyAdmin-$VERSION-all-languages /usr/src/phpmyadmin; \ + rm -rf /usr/src/phpmyadmin/setup/ /usr/src/phpmyadmin/examples/ /usr/src/phpmyadmin/test/ /usr/src/phpmyadmin/po/ /usr/src/phpmyadmin/composer.json /usr/src/phpmyadmin/RELEASE-DATE-$VERSION; \ + sed -i "s@define('CONFIG_DIR'.*@define('CONFIG_DIR', '/etc/phpmyadmin/');@" /usr/src/phpmyadmin/libraries/vendor_config.php; \ +# Add directory for sessions to allow session persistence + mkdir /sessions; \ + mkdir -p /var/nginx/client_body_temp; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ + rm -rf /var/lib/apt/lists/* + +# Copy configuration +COPY config.inc.php /etc/phpmyadmin/config.inc.php +COPY php.ini /usr/local/etc/php/conf.d/php-phpmyadmin.ini + +# Copy main script +COPY docker-entrypoint.sh /docker-entrypoint.sh + +ENTRYPOINT [ "/docker-entrypoint.sh" ] +CMD ["%%CMD%%"] diff --git a/Makefile b/Makefile index 391b2e18..c1f4b6de 100644 --- a/Makefile +++ b/Makefile @@ -4,11 +4,16 @@ DOCKER_REPO = phpmyadmin/phpmyadmin all: build run logs -build: - docker build -t ${DOCKER_REPO}:testing . +build: build-apache build-fpm build-fpm-alpine -build_nc: - docker build --no-cache=true -t ${DOCKER_REPO}:testing . +build-apache: + docker build ${DOCKER_FLAGS} -t ${DOCKER_REPO}:testing apache + +build-fpm: + docker build ${DOCKER_FLAGS} -t ${DOCKER_REPO}:testing-fpm fpm + +build-fpm-alpine: + docker build ${DOCKER_FLAGS} -t ${DOCKER_REPO}:testing-fpm-alpine fpm-alpine run: docker-compose -f docker-compose.testing.yml up -d diff --git a/apache/Dockerfile b/apache/Dockerfile new file mode 100644 index 00000000..0a82c293 --- /dev/null +++ b/apache/Dockerfile @@ -0,0 +1,79 @@ +FROM php:7.2-apache + +# Install dependencies +RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libbz2-dev \ + libfreetype6-dev \ + libjpeg-dev \ + libpng-dev \ + libwebp-dev \ + libxpm-dev \ + ; \ + \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr; \ + docker-php-ext-install bz2 gd mysqli opcache zip; \ + \ + apt-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/* + +# Calculate download URL +ENV VERSION 4.8.5 +ENV URL https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.xz +LABEL version=$VERSION + +# Download tarball, verify it using gpg and extract +RUN set -ex; \ + fetchDeps=" \ + gnupg \ + dirmngr \ + "; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + \ + export GNUPGHOME="$(mktemp -d)"; \ + export GPGKEY="3D06A59ECE730EB71B511C17CE752F178259BD92"; \ + curl --output phpMyAdmin.tar.xz --location $URL; \ + curl --output phpMyAdmin.tar.xz.asc --location $URL.asc; \ + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver ipv4.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keys.gnupg.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver pgp.mit.edu --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keyserver.pgp.com --recv-keys "$GPGKEY"; \ + gpg --batch --verify phpMyAdmin.tar.xz.asc phpMyAdmin.tar.xz; \ + tar -xf phpMyAdmin.tar.xz -C /usr/src; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" phpMyAdmin.tar.xz phpMyAdmin.tar.xz.asc; \ + mv /usr/src/phpMyAdmin-$VERSION-all-languages /usr/src/phpmyadmin; \ + rm -rf /usr/src/phpmyadmin/setup/ /usr/src/phpmyadmin/examples/ /usr/src/phpmyadmin/test/ /usr/src/phpmyadmin/po/ /usr/src/phpmyadmin/composer.json /usr/src/phpmyadmin/RELEASE-DATE-$VERSION; \ + sed -i "s@define('CONFIG_DIR'.*@define('CONFIG_DIR', '/etc/phpmyadmin/');@" /usr/src/phpmyadmin/libraries/vendor_config.php; \ +# Add directory for sessions to allow session persistence + mkdir /sessions; \ + mkdir -p /var/nginx/client_body_temp; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ + rm -rf /var/lib/apt/lists/* + +# Copy configuration +COPY config.inc.php /etc/phpmyadmin/config.inc.php +COPY php.ini /usr/local/etc/php/conf.d/php-phpmyadmin.ini + +# Copy main script +COPY docker-entrypoint.sh /docker-entrypoint.sh + +ENTRYPOINT [ "/docker-entrypoint.sh" ] +CMD ["apache2-foreground"] diff --git a/etc/phpmyadmin/config.inc.php b/apache/config.inc.php similarity index 100% rename from etc/phpmyadmin/config.inc.php rename to apache/config.inc.php diff --git a/apache/docker-entrypoint.sh b/apache/docker-entrypoint.sh new file mode 100755 index 00000000..85ef7d0a --- /dev/null +++ b/apache/docker-entrypoint.sh @@ -0,0 +1,50 @@ +#!/bin/bash +if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then + if [ "$(id -u)" = '0' ]; then + case "$1" in + apache2*) + user="${APACHE_RUN_USER:-www-data}" + group="${APACHE_RUN_GROUP:-www-data}" + ;; + *) # php-fpm + user='www-data' + group='www-data' + ;; + esac + else + user="$(id -u)" + group="$(id -g)" + fi + + chown www-data:www-data /sessions /var/nginx/client_body_temp + + if ! [ -e index.php -a -e db_designer.php ]; then + echo >&2 "phpMyAdmin not found in $PWD - copying now..." + if [ "$(ls -A)" ]; then + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" + ( set -x; ls -A; sleep 10 ) + fi + tar --create \ + --file - \ + --one-file-system \ + --directory /usr/src/phpmyadmin \ + --owner "$user" --group "$group" \ + . | tar --extract --file - + echo >&2 "Complete! phpMyAdmin has been successfully copied to $PWD" + mkdir -p tmp; \ + chmod -R 777 tmp; \ + fi + + if [ ! -f /etc/phpmyadmin/config.secret.inc.php ]; then + cat > /etc/phpmyadmin/config.secret.inc.php <&2 "phpMyAdmin not found in $PWD - copying now..." + if [ "$(ls -A)" ]; then + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" + ( set -x; ls -A; sleep 10 ) + fi + tar --create \ + --file - \ + --one-file-system \ + --directory /usr/src/phpmyadmin \ + --owner "$user" --group "$group" \ + . | tar --extract --file - + echo >&2 "Complete! phpMyAdmin has been successfully copied to $PWD" + mkdir -p tmp; \ + chmod -R 777 tmp; \ + fi + + if [ ! -f /etc/phpmyadmin/config.secret.inc.php ]; then + cat > /etc/phpmyadmin/config.secret.inc.php <&2 "phpMyAdmin not found in $PWD - copying now..." + if [ "$(ls -A)" ]; then + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" + ( set -x; ls -A; sleep 10 ) + fi + tar --create \ + --file - \ + --one-file-system \ + --directory /usr/src/phpmyadmin \ + --owner "$user" --group "$group" \ + . | tar --extract --file - + echo >&2 "Complete! phpMyAdmin has been successfully copied to $PWD" + mkdir -p tmp; \ + chmod -R 777 tmp; \ + fi + + if [ ! -f /etc/phpmyadmin/config.secret.inc.php ]; then + cat > /etc/phpmyadmin/config.secret.inc.php <&2 "phpMyAdmin not found in $PWD - copying now..." + if [ "$(ls -A)" ]; then + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" + ( set -x; ls -A; sleep 10 ) + fi + tar --create \ + --file - \ + --one-file-system \ + --directory /usr/src/phpmyadmin \ + --owner "$user" --group "$group" \ + . | tar --extract --file - + echo >&2 "Complete! phpMyAdmin has been successfully copied to $PWD" + mkdir -p tmp; \ + chmod -R 777 tmp; \ + fi + + if [ ! -f /etc/phpmyadmin/config.secret.inc.php ]; then + cat > /etc/phpmyadmin/config.secret.inc.php < /dev/null; \ + apt-mark manual $savedAptMark; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/* + +# Calculate download URL +ENV VERSION 4.8.5 +ENV URL https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.xz +LABEL version=$VERSION + +# Download tarball, verify it using gpg and extract +RUN set -ex; \ + fetchDeps=" \ + gnupg \ + dirmngr \ + "; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + \ + export GNUPGHOME="$(mktemp -d)"; \ + export GPGKEY="3D06A59ECE730EB71B511C17CE752F178259BD92"; \ + curl --output phpMyAdmin.tar.xz --location $URL; \ + curl --output phpMyAdmin.tar.xz.asc --location $URL.asc; \ + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver ipv4.pool.sks-keyservers.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keys.gnupg.net --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver pgp.mit.edu --recv-keys "$GPGKEY" \ + || gpg --batch --keyserver keyserver.pgp.com --recv-keys "$GPGKEY"; \ + gpg --batch --verify phpMyAdmin.tar.xz.asc phpMyAdmin.tar.xz; \ + tar -xf phpMyAdmin.tar.xz -C /usr/src; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" phpMyAdmin.tar.xz phpMyAdmin.tar.xz.asc; \ + mv /usr/src/phpMyAdmin-$VERSION-all-languages /usr/src/phpmyadmin; \ + rm -rf /usr/src/phpmyadmin/setup/ /usr/src/phpmyadmin/examples/ /usr/src/phpmyadmin/test/ /usr/src/phpmyadmin/po/ /usr/src/phpmyadmin/composer.json /usr/src/phpmyadmin/RELEASE-DATE-$VERSION; \ + sed -i "s@define('CONFIG_DIR'.*@define('CONFIG_DIR', '/etc/phpmyadmin/');@" /usr/src/phpmyadmin/libraries/vendor_config.php; \ +# Add directory for sessions to allow session persistence + mkdir /sessions; \ + mkdir -p /var/nginx/client_body_temp; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ + rm -rf /var/lib/apt/lists/* + +# Copy configuration +COPY config.inc.php /etc/phpmyadmin/config.inc.php +COPY php.ini /usr/local/etc/php/conf.d/php-phpmyadmin.ini + +# Copy main script +COPY docker-entrypoint.sh /docker-entrypoint.sh + +ENTRYPOINT [ "/docker-entrypoint.sh" ] +CMD ["php-fpm"] diff --git a/fpm/config.inc.php b/fpm/config.inc.php new file mode 100644 index 00000000..f7c3e070 --- /dev/null +++ b/fpm/config.inc.php @@ -0,0 +1,137 @@ +&2 "phpMyAdmin not found in $PWD - copying now..." + if [ "$(ls -A)" ]; then + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" + ( set -x; ls -A; sleep 10 ) + fi + tar --create \ + --file - \ + --one-file-system \ + --directory /usr/src/phpmyadmin \ + --owner "$user" --group "$group" \ + . | tar --extract --file - + echo >&2 "Complete! phpMyAdmin has been successfully copied to $PWD" + mkdir -p tmp; \ + chmod -R 777 tmp; \ + fi + + if [ ! -f /etc/phpmyadmin/config.secret.inc.php ]; then + cat > /etc/phpmyadmin/config.secret.inc.php <&2 "phpMyAdmin not found in $PWD - copying now..." + if [ "$(ls -A)" ]; then + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" + ( set -x; ls -A; sleep 10 ) + fi + tar --create \ + --file - \ + --one-file-system \ + --directory /usr/src/phpmyadmin \ + --owner "$user" --group "$group" \ + . | tar --extract --file - + echo >&2 "Complete! phpMyAdmin has been successfully copied to $PWD" + mkdir -p tmp; \ + chmod -R 777 tmp; \ + fi + + if [ ! -f /etc/phpmyadmin/config.secret.inc.php ]; then + cat > /etc/phpmyadmin/config.secret.inc.php </dev/null; do + while [ $(docker logs db_server 2>&1 | fgrep -c "mysqld: ready for connections.") -le 0 ] ; do echo "Waiting for ${PHPMYADMIN_DB_HOSTNAME} database start..." sleep 10 TIMEOUT=$((TIMEOUT + 1)) if [ $TIMEOUT -gt 3 ] ; then echo "Failed to connect ${PHPMYADMIN_DB_HOSTNAME} database!" echo "Result of ${PHPMYADMIN_DB_HOSTNAME} tests: ${RED}FAILED${NC}" - ret=1 + docker logs ${NAME} + exit 1 + fi + done + + # Wait for container to start + TIMEOUT=0 + while [ $(docker logs ${NAME} 2>&1 | fgrep -c "Command line: 'apache2 -D FOREGROUND'") -le 0 ] ; do + echo "Waiting for PHPMyAdmin start..." + sleep 1 + TIMEOUT=$((TIMEOUT + 1)) + if [ $TIMEOUT -gt 10 ] ; then + echo "Failed to connect PHPMyAdmin!" + echo "Result of ${PHPMYADMIN_DB_HOSTNAME} tests: ${RED}FAILED${NC}" + docker logs ${NAME} exit 1 fi done else - echo "Tests running outside container..." - docker ps -a - COMMAND_HOST="docker exec ${NAME}" + echo "Tests running inside container..." + FILENAME=/phpmyadmin_test.py fi -# Wait for container to start -TIMEOUT=0 -while ! $COMMAND_HOST ps aux | grep -q nginx ; do - echo "Waiting for PHPMyAdmin start..." - sleep 1 - TIMEOUT=$((TIMEOUT + 1)) - if [ $TIMEOUT -gt 10 ] ; then - echo "Failed to connect PHPMyAdmin!" - echo "Result of ${PHPMYADMIN_DB_HOSTNAME} tests: ${RED}FAILED${NC}" - ret=1 - exit 1 - fi -done - # Perform tests -if [ $ret -eq 0 ] ; then - if [ -f /phpmyadmin_test.py ] ; then - FILENAME=/phpmyadmin_test.py - elif [ -f ./phpmyadmin_test.py ] ; then - FILENAME=./phpmyadmin_test.py - else - FILENAME=./testing/phpmyadmin_test.py - fi - python $FILENAME --url "$PHPMYADMIN_URL" --username root --password $TESTSUITE_PASSWORD $SERVER - ret=$? -fi +ret=0 +$FILENAME --url "$PHPMYADMIN_URL" --username root --password $TESTSUITE_PASSWORD $SERVER +ret=$? # Show debug output in case of failure if [ $ret -ne 0 ] ; then curl "$PHPMYADMIN_URL" - $COMMAND_HOST ps faux - $COMMAND_HOST cat /var/log/php-fpm.log - $COMMAND_HOST cat /var/log/nginx-error.log - $COMMAND_HOST cat /var/log/supervisord.log + ${COMMAND_HOST} ps faux echo "Result of ${PHPMYADMIN_DB_HOSTNAME} tests: ${RED}FAILED${NC}" exit $ret fi diff --git a/testing/wait-for-testing.sh b/testing/wait-for-testing.sh deleted file mode 100755 index b91c798b..00000000 --- a/testing/wait-for-testing.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -# Helper script to wait for testing inside container completes -# Needs running docker-compose container based on docker-compose.testing.yml - -GREEN="\033[0;32m" -RED="\033[0;31m" -NC="\033[0m" # No Color - -TIMEOUT=0 - -sleep 5 - -while [ `docker-compose -f docker-compose.testing.yml logs phpmyadmin | grep -c 'Result of db_server tests'` -lt 1 ] ; do - sleep 1 - TIMEOUT=$(($TIMEOUT + 1)) - if [ $TIMEOUT -gt 20 ] ; then - docker-compose -f docker-compose.testing.yml logs phpmyadmin - echo "${RED}Timeout!${NC}" - exit 1 - fi -done - -if [ `docker-compose -f docker-compose.testing.yml logs phpmyadmin | grep -c 'Result of db_server tests.*SUCCESS'` -lt 1 ] ; then - docker-compose -f docker-compose.testing.yml logs phpmyadmin - echo "${RED}Failed${NC}" - exit 2 -fi - -docker-compose -f docker-compose.testing.yml logs phpmyadmin -echo "${GREEN}Success${NC}" -exit 0 diff --git a/update.sh b/update.sh new file mode 100755 index 00000000..7897594d --- /dev/null +++ b/update.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -e + +declare -A cmd=( + [apache]='apache2-foreground' + [fpm]='php-fpm' + [fpm-alpine]='php-fpm' +) + +declare -A base=( + [apache]='debian' + [fpm]='debian' + [fpm-alpine]='alpine' +) + +for variant in apache fpm fpm-alpine; do + template="Dockerfile-${base[$variant]}.template" + cp $template "$variant/Dockerfile" + cp config.inc.php "$variant/config.inc.php" + cp docker-entrypoint.sh "$variant/docker-entrypoint.sh" + cp php.ini "$variant/php.ini" + sed -ri -e ' + s/%%VARIANT%%/'"$variant"'/; + s/%%CMD%%/'"${cmd[$variant]}"'/; + ' "$variant/Dockerfile" +done