From 9e0fb198090973763de184a442519cdd04dffa50 Mon Sep 17 00:00:00 2001 From: Brett Tasker Date: Sat, 8 Aug 2020 19:15:00 +1200 Subject: [PATCH 1/2] Add FPM and CLI builds --- .github/workflows/build_test.yml | 40 ++++++------ docker-compose.test.yml | 1 + src/5.6/cli/jessie/Dockerfile | 48 ++++++++++++++ src/5.6/cli/stretch/Dockerfile | 48 ++++++++++++++ src/5.6/fpm/jessie/Dockerfile | 48 ++++++++++++++ src/5.6/fpm/stretch/Dockerfile | 48 ++++++++++++++ src/7.1/cli/buster/Dockerfile | 45 +++++++++++++ src/7.1/cli/jessie/Dockerfile | 45 +++++++++++++ src/7.1/cli/stretch/Dockerfile | 45 +++++++++++++ src/7.1/fpm/buster/Dockerfile | 45 +++++++++++++ src/7.1/fpm/jessie/Dockerfile | 45 +++++++++++++ src/7.1/fpm/stretch/Dockerfile | 45 +++++++++++++ src/7.2/cli/buster/Dockerfile | 59 ++++++++++++++++++ src/7.2/cli/stretch/Dockerfile | 59 ++++++++++++++++++ src/7.2/fpm/buster/Dockerfile | 59 ++++++++++++++++++ src/7.2/fpm/stretch/Dockerfile | 59 ++++++++++++++++++ src/7.3/cli/buster/Dockerfile | 59 ++++++++++++++++++ src/7.3/cli/stretch/Dockerfile | 58 +++++++++++++++++ src/7.3/fpm/buster/Dockerfile | 59 ++++++++++++++++++ src/7.3/fpm/stretch/Dockerfile | 58 +++++++++++++++++ src/7.4/cli/buster/Dockerfile | 59 ++++++++++++++++++ src/7.4/fpm/buster/Dockerfile | 59 ++++++++++++++++++ tests/files/test.sh | 104 +++++++++++++++++++++++-------- 23 files changed, 1150 insertions(+), 45 deletions(-) create mode 100755 src/5.6/cli/jessie/Dockerfile create mode 100755 src/5.6/cli/stretch/Dockerfile create mode 100755 src/5.6/fpm/jessie/Dockerfile create mode 100755 src/5.6/fpm/stretch/Dockerfile create mode 100755 src/7.1/cli/buster/Dockerfile create mode 100755 src/7.1/cli/jessie/Dockerfile create mode 100755 src/7.1/cli/stretch/Dockerfile create mode 100755 src/7.1/fpm/buster/Dockerfile create mode 100755 src/7.1/fpm/jessie/Dockerfile create mode 100755 src/7.1/fpm/stretch/Dockerfile create mode 100755 src/7.2/cli/buster/Dockerfile create mode 100755 src/7.2/cli/stretch/Dockerfile create mode 100755 src/7.2/fpm/buster/Dockerfile create mode 100755 src/7.2/fpm/stretch/Dockerfile create mode 100755 src/7.3/cli/buster/Dockerfile create mode 100755 src/7.3/cli/stretch/Dockerfile create mode 100755 src/7.3/fpm/buster/Dockerfile create mode 100755 src/7.3/fpm/stretch/Dockerfile create mode 100755 src/7.4/cli/buster/Dockerfile create mode 100755 src/7.4/fpm/buster/Dockerfile diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 8e34420..80cc5c1 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -8,6 +8,7 @@ on: pull_request: branches: - master + - release/** # Also trigger on page_build, as well as release created events page_build: release: @@ -19,14 +20,13 @@ jobs: name: Build & Test # This job runs on Linux runs-on: ubuntu-latest - env: - distro: apache strategy: fail-fast: false matrix: os: [stretch, buster] php: [7.2, 7.3, 7.4] framework: [3, 4] + distro: [apache, fpm, cli] exclude: - os: stretch php: 7.4 @@ -35,6 +35,10 @@ jobs: php: 7.4 framework: 4 steps: + - name: The job has failed + if: ${{ failure() }} + run: docker-compose -f docker-compose.test.yml logs + - name: Checkout code uses: actions/checkout@v2 @@ -44,14 +48,14 @@ jobs: - name: Docker Caching uses: satackey/action-docker-layer-caching@v0.0.5 with: - key: docker-cache-v2-${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }}-{hash} + key: docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}-{hash} restore-keys: | - docker-cache-v2-${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }}- + docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}-{hash} - name: Build Images env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ env.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }} + BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} + IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} run: docker-compose -f docker-compose.test.yml build - name: Get Composer Cache Directory @@ -80,10 +84,11 @@ jobs: - name: Run tests env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ env.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }} - DISTRO: ${{ env.distro }} + BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} + IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} + DISTRO: ${{ matrix.distro }} run: docker-compose -f docker-compose.test.yml run sut + # Legacy PHP 5.6 and 7.1 tests build_legacy: @@ -91,13 +96,12 @@ jobs: name: Legacy Build & Test # This job runs on Linux runs-on: ubuntu-latest - env: - distro: apache strategy: matrix: os: [jessie, stretch, buster] php: [5.6, 7.1] framework: [3, 4] + distro: [apache, fpm, cli] exclude: - os: buster php: 5.6 @@ -113,14 +117,14 @@ jobs: - name: Docker Caching uses: satackey/action-docker-layer-caching@v0.0.5 with: - key: docker-cache-v2-${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }}-{hash} + key: docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}-{hash} restore-keys: | - docker-cache-v2-${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }}- + docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}- - name: Build Images env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ env.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }} + BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} + IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} run: docker-compose -f docker-compose.test.yml build - name: Get Composer Cache Directory @@ -149,7 +153,7 @@ jobs: - name: Run tests env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ env.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ env.distro }}-${{ matrix.os }} - DISTRO: ${{ env.distro }} + BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} + IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} + DISTRO: ${{ matrix.distro }} run: docker-compose -f docker-compose.test.yml run sut \ No newline at end of file diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 98a8a28..84d704f 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -9,6 +9,7 @@ services: - database environment: - DISTRO=${DISTRO:-apache} + - MOUNT_DIR=${MOUNT_DIR:-/var/www/html} volumes: - codebase:/src diff --git a/src/5.6/cli/jessie/Dockerfile b/src/5.6/cli/jessie/Dockerfile new file mode 100755 index 0000000..b6fe390 --- /dev/null +++ b/src/5.6/cli/jessie/Dockerfile @@ -0,0 +1,48 @@ +FROM php:5.6-cli-jessie +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure mysql --with-mysql=mysqlnd && \ + docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysql \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/5.6/cli/stretch/Dockerfile b/src/5.6/cli/stretch/Dockerfile new file mode 100755 index 0000000..37c3e82 --- /dev/null +++ b/src/5.6/cli/stretch/Dockerfile @@ -0,0 +1,48 @@ +FROM php:5.6-cli-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure mysql --with-mysql=mysqlnd && \ + docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysql \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/5.6/fpm/jessie/Dockerfile b/src/5.6/fpm/jessie/Dockerfile new file mode 100755 index 0000000..1016767 --- /dev/null +++ b/src/5.6/fpm/jessie/Dockerfile @@ -0,0 +1,48 @@ +FROM php:5.6-fpm-jessie +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure mysql --with-mysql=mysqlnd && \ + docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysql \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/5.6/fpm/stretch/Dockerfile b/src/5.6/fpm/stretch/Dockerfile new file mode 100755 index 0000000..2b1d7ab --- /dev/null +++ b/src/5.6/fpm/stretch/Dockerfile @@ -0,0 +1,48 @@ +FROM php:5.6-fpm-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure mysql --with-mysql=mysqlnd && \ + docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysql \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini diff --git a/src/7.1/cli/buster/Dockerfile b/src/7.1/cli/buster/Dockerfile new file mode 100755 index 0000000..47b59f8 --- /dev/null +++ b/src/7.1/cli/buster/Dockerfile @@ -0,0 +1,45 @@ +FROM php:7.1-cli-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/cli/jessie/Dockerfile b/src/7.1/cli/jessie/Dockerfile new file mode 100755 index 0000000..c7d1278 --- /dev/null +++ b/src/7.1/cli/jessie/Dockerfile @@ -0,0 +1,45 @@ +FROM php:7.1-cli-jessie +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/cli/stretch/Dockerfile b/src/7.1/cli/stretch/Dockerfile new file mode 100755 index 0000000..27d4cde --- /dev/null +++ b/src/7.1/cli/stretch/Dockerfile @@ -0,0 +1,45 @@ +FROM php:7.1-cli-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/fpm/buster/Dockerfile b/src/7.1/fpm/buster/Dockerfile new file mode 100755 index 0000000..4c1cbc4 --- /dev/null +++ b/src/7.1/fpm/buster/Dockerfile @@ -0,0 +1,45 @@ +FROM php:7.1-fpm-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/fpm/jessie/Dockerfile b/src/7.1/fpm/jessie/Dockerfile new file mode 100755 index 0000000..6e6dd4e --- /dev/null +++ b/src/7.1/fpm/jessie/Dockerfile @@ -0,0 +1,45 @@ +FROM php:7.1-fpm-jessie +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/fpm/stretch/Dockerfile b/src/7.1/fpm/stretch/Dockerfile new file mode 100755 index 0000000..e563f3f --- /dev/null +++ b/src/7.1/fpm/stretch/Dockerfile @@ -0,0 +1,45 @@ +FROM php:7.1-fpm-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + libcurl4-openssl-dev \ + libgd-dev \ + libldap2-dev \ + libmcrypt-dev \ + libtidy-dev \ + libxslt-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install PHP Extensions +RUN docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + bcmath \ + intl \ + gd \ + ldap \ + mcrypt \ + mysqli \ + pdo \ + pdo_mysql \ + soap \ + tidy \ + xsl \ + zip + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/cli/buster/Dockerfile b/src/7.2/cli/buster/Dockerfile new file mode 100755 index 0000000..5483d52 --- /dev/null +++ b/src/7.2/cli/buster/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.2-cli-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/cli/stretch/Dockerfile b/src/7.2/cli/stretch/Dockerfile new file mode 100755 index 0000000..36da0d2 --- /dev/null +++ b/src/7.2/cli/stretch/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.2-cli-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/fpm/buster/Dockerfile b/src/7.2/fpm/buster/Dockerfile new file mode 100755 index 0000000..f2c31bd --- /dev/null +++ b/src/7.2/fpm/buster/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.2-fpm-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/fpm/stretch/Dockerfile b/src/7.2/fpm/stretch/Dockerfile new file mode 100755 index 0000000..2d11540 --- /dev/null +++ b/src/7.2/fpm/stretch/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.2-fpm-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/cli/buster/Dockerfile b/src/7.3/cli/buster/Dockerfile new file mode 100755 index 0000000..5feaaa8 --- /dev/null +++ b/src/7.3/cli/buster/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.3-cli-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/cli/stretch/Dockerfile b/src/7.3/cli/stretch/Dockerfile new file mode 100755 index 0000000..fbc0301 --- /dev/null +++ b/src/7.3/cli/stretch/Dockerfile @@ -0,0 +1,58 @@ +FROM php:7.3-cli-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/fpm/buster/Dockerfile b/src/7.3/fpm/buster/Dockerfile new file mode 100755 index 0000000..fe29e22 --- /dev/null +++ b/src/7.3/fpm/buster/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.3-fpm-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/fpm/stretch/Dockerfile b/src/7.3/fpm/stretch/Dockerfile new file mode 100755 index 0000000..1f9fb66 --- /dev/null +++ b/src/7.3/fpm/stretch/Dockerfile @@ -0,0 +1,58 @@ +FROM php:7.3-fpm-stretch +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.4/cli/buster/Dockerfile b/src/7.4/cli/buster/Dockerfile new file mode 100755 index 0000000..42a1f71 --- /dev/null +++ b/src/7.4/cli/buster/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.4-cli-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.4/fpm/buster/Dockerfile b/src/7.4/fpm/buster/Dockerfile new file mode 100755 index 0000000..441ac3f --- /dev/null +++ b/src/7.4/fpm/buster/Dockerfile @@ -0,0 +1,59 @@ +FROM php:7.4-fpm-buster +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive + +# Install components +RUN apt-get update -y && apt-get install -y \ + curl \ + git-core \ + gzip \ + openssh-client \ + unzip \ + zip \ + --no-install-recommends && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd && \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/tests/files/test.sh b/tests/files/test.sh index d391583..ff55d9a 100644 --- a/tests/files/test.sh +++ b/tests/files/test.sh @@ -1,49 +1,99 @@ #!/bin/bash set -euo pipefail -try_curl() { - local -i max_attempts=5 - local -i attempt_num=1 +REQUEST_URI="/dev/build" - until RESULT=$(lynx -dump http://silverstripe/dev/build) +# Retries a command on failure. +# $1 - the max number of attempts +# $2... - the command to run + +retry() { + local -r -i max_attempts="$1"; shift + local -r cmd="$@" + local -i attempt_num=1 + until $cmd do if ((attempt_num==max_attempts)) then - echo "Attempt $attempt_num failed and there are no more attempts left!" return 1 else - echo "Attempt $attempt_num failed! Trying again in $attempt_num seconds..." sleep $((attempt_num++)) fi done +} + + +try_curl() { + RESULT=$(retry 5 lynx -dump http://silverstripe/dev/build) + + echo "${RESULT}" +} + +try_cgi() { + RESULT=$(REQUEST_URI=${REQUEST_URI:-/dev/build} \ + SCRIPT_FILENAME=${WORK_DIR:-/var/www/html}/index.php \ + SERVER_PROTOCOL=HTTP/1.1 \ + REQUEST_METHOD=GET \ + QUERY_STRING=${QUERY_STRING:-} \ + ./wait-for silverstripe:9000 --quiet --timeout=20 -- cgi-fcgi -bind -connect silverstripe:9000 | lynx --dump -stdin) echo "${RESULT}" } +fail() { + MESSAGE="Tests failed!" + echo "${MESSAGE}" + echo "" + echo "REQUEST_URI: ${REQUEST_URI:-}" + echo "WORK_DIR: ${WORK_DIR:-}" + echo "QUERY_STRING: ${QUERY_STRING:-}" + exit 1 +} + +pass() { + MESSAGE=${1:-Tests passed!} + echo "${MESSAGE}" + exit 0 +} + cp .env /src/ cp _ss_environment.php /src/ chown -R www-data:www-data /src -./wait-for database:3306 --quiet --timeout=20 - -if [ "${DISTRO}" == "apache" ]; then - try_curl - if [[ "${RESULT}" =~ "Database build completed!" ]]; then - echo "Tests passed!" - exit 0 - else - echo "Tests failed!" - exit 1 - fi -elif [ "${DISTRO}" == "fpm" ]; then - SCRIPT_NAME=/dev/build \ - SCRIPT_FILENAME=/dev/build \ - REQUEST_METHOD=GET \ - ./wait-for silverstripe:9000 --quiet --timeout=20 -- cgi-fcgi -bind -connect silverstripe:9000 +echo " - Checking database connection..." +retry 5 ./wait-for database:3306 --quiet --timeout=5 +echo " - Good" +echo "" - echo "Tests passed!" - exit 0 -fi -echo "Tests skipped!" -exit 0 \ No newline at end of file +case "${DISTRO}" in + apache) + try_curl + + if [[ "${RESULT}" =~ "Database build completed!" ]]; then + pass + fi + ;; + fpm) + WORK_DIR=${MOUNT_DIR:-/var/www/html} + [ -d "/src/public" ] && WORK_DIR="${WORK_DIR}/public" + + try_cgi + # Check if 302 and for devbuildtoken and retry + if [[ "${RESULT}" =~ "Status: 302" ]]; then + TOKEN=$(echo "${RESULT}" | sed -nr 's/.*devbuildtoken=([a-z0-9]+).*/\1/p') + QUERY_STRING="devbuildtoken=${TOKEN}" + try_cgi + fi + + if [[ "${RESULT}" =~ "Database build completed!" ]]; then + pass + fi + ;; + cli) + pass "Skipping CLI tests" + ;; +esac + +# If we get here. Tests failed. +fail \ No newline at end of file From 32303974939f8af13602735590bd77814917393d Mon Sep 17 00:00:00 2001 From: Brett Tasker Date: Sun, 9 Aug 2020 21:21:47 +1200 Subject: [PATCH 2/2] Template Dockerfiles, reduce duplication --- .github/workflows/build_test.yml | 69 ++++----- .travis.yml.bak | 115 --------------- LICENSE | 2 +- Makefile | 64 +++++++-- README.md | 36 +---- build.sh | 133 ------------------ build/build-image.sh | 58 ++++++++ build/build-regex.sh | 57 ++++++++ docker-compose.test.yml => docker-compose.yml | 25 +++- examples/.env | 10 -- examples/_ss_environment.php | 19 --- examples/docker-windows.png | Bin 38756 -> 0 bytes examples/example.yml | 23 --- examples/multi-environment.example.yml | 33 ----- examples/nginx-proxy.example.yml | 32 ----- src/5.6/apache/jessie/Dockerfile | 72 ---------- src/5.6/apache/stretch/Dockerfile | 72 ---------- src/5.6/cli/jessie/Dockerfile | 48 ------- src/5.6/cli/stretch/Dockerfile | 48 ------- src/5.6/fpm/jessie/Dockerfile | 48 ------- src/5.6/fpm/stretch/Dockerfile | 48 ------- src/5.6/platform/Dockerfile | 71 ---------- src/7.1/apache/buster/Dockerfile | 69 --------- src/7.1/apache/jessie/Dockerfile | 69 --------- src/7.1/apache/stretch/Dockerfile | 69 --------- src/7.1/cli/buster/Dockerfile | 45 ------ src/7.1/cli/jessie/Dockerfile | 45 ------ src/7.1/cli/stretch/Dockerfile | 45 ------ src/7.1/fpm/buster/Dockerfile | 45 ------ src/7.1/fpm/jessie/Dockerfile | 45 ------ src/7.1/fpm/stretch/Dockerfile | 45 ------ src/7.1/platform/Dockerfile | 69 --------- src/7.2/apache/buster/Dockerfile | 83 ----------- src/7.2/apache/stretch/Dockerfile | 83 ----------- src/7.2/cli/buster/Dockerfile | 59 -------- src/7.2/cli/stretch/Dockerfile | 59 -------- src/7.2/fpm/buster/Dockerfile | 59 -------- src/7.2/fpm/stretch/Dockerfile | 59 -------- src/7.3/apache/buster/Dockerfile | 83 ----------- src/7.3/apache/stretch/Dockerfile | 82 ----------- src/7.3/cli/buster/Dockerfile | 59 -------- src/7.3/cli/stretch/Dockerfile | 58 -------- src/7.3/fpm/buster/Dockerfile | 59 -------- src/7.3/fpm/stretch/Dockerfile | 58 -------- src/7.4/apache/buster/Dockerfile | 83 ----------- src/7.4/fpm/buster/Dockerfile | 59 -------- src/Dockerfile | 5 + src/debian/Dockerfile.apache.tpl | 23 +++ .../Dockerfile => debian/Dockerfile.php.tpl} | 103 ++++++-------- tests/Dockerfile.sut | 10 ++ tests/Dockerfile.test | 12 +- tests/files/.env | 10 -- tests/files/test.sh | 113 ++++++++++----- 53 files changed, 384 insertions(+), 2464 deletions(-) delete mode 100644 .travis.yml.bak delete mode 100755 build.sh create mode 100755 build/build-image.sh create mode 100755 build/build-regex.sh rename docker-compose.test.yml => docker-compose.yml (59%) delete mode 100755 examples/.env delete mode 100644 examples/_ss_environment.php delete mode 100644 examples/docker-windows.png delete mode 100644 examples/example.yml delete mode 100644 examples/multi-environment.example.yml delete mode 100644 examples/nginx-proxy.example.yml delete mode 100755 src/5.6/apache/jessie/Dockerfile delete mode 100755 src/5.6/apache/stretch/Dockerfile delete mode 100755 src/5.6/cli/jessie/Dockerfile delete mode 100755 src/5.6/cli/stretch/Dockerfile delete mode 100755 src/5.6/fpm/jessie/Dockerfile delete mode 100755 src/5.6/fpm/stretch/Dockerfile delete mode 100644 src/5.6/platform/Dockerfile delete mode 100755 src/7.1/apache/buster/Dockerfile delete mode 100755 src/7.1/apache/jessie/Dockerfile delete mode 100755 src/7.1/apache/stretch/Dockerfile delete mode 100755 src/7.1/cli/buster/Dockerfile delete mode 100755 src/7.1/cli/jessie/Dockerfile delete mode 100755 src/7.1/cli/stretch/Dockerfile delete mode 100755 src/7.1/fpm/buster/Dockerfile delete mode 100755 src/7.1/fpm/jessie/Dockerfile delete mode 100755 src/7.1/fpm/stretch/Dockerfile delete mode 100644 src/7.1/platform/Dockerfile delete mode 100755 src/7.2/apache/buster/Dockerfile delete mode 100755 src/7.2/apache/stretch/Dockerfile delete mode 100755 src/7.2/cli/buster/Dockerfile delete mode 100755 src/7.2/cli/stretch/Dockerfile delete mode 100755 src/7.2/fpm/buster/Dockerfile delete mode 100755 src/7.2/fpm/stretch/Dockerfile delete mode 100755 src/7.3/apache/buster/Dockerfile delete mode 100755 src/7.3/apache/stretch/Dockerfile delete mode 100755 src/7.3/cli/buster/Dockerfile delete mode 100755 src/7.3/cli/stretch/Dockerfile delete mode 100755 src/7.3/fpm/buster/Dockerfile delete mode 100755 src/7.3/fpm/stretch/Dockerfile delete mode 100755 src/7.4/apache/buster/Dockerfile delete mode 100755 src/7.4/fpm/buster/Dockerfile create mode 100644 src/Dockerfile create mode 100644 src/debian/Dockerfile.apache.tpl rename src/{7.4/cli/buster/Dockerfile => debian/Dockerfile.php.tpl} (64%) mode change 100755 => 100644 create mode 100644 tests/Dockerfile.sut delete mode 100755 tests/files/.env diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 80cc5c1..588c58b 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -35,28 +35,14 @@ jobs: php: 7.4 framework: 4 steps: - - name: The job has failed - if: ${{ failure() }} - run: docker-compose -f docker-compose.test.yml logs - - name: Checkout code uses: actions/checkout@v2 - name: Pull Docker images - run: docker-compose -f docker-compose.test.yml pull - - - name: Docker Caching - uses: satackey/action-docker-layer-caching@v0.0.5 - with: - key: docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}-{hash} - restore-keys: | - docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}-{hash} + run: docker-compose pull - - name: Build Images - env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} - run: docker-compose -f docker-compose.test.yml build + - name: Build Image + run: ./build/build-image.sh ${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} - name: Get Composer Cache Directory id: composer-data @@ -75,20 +61,22 @@ jobs: env: FRAMEWORK: ${{ matrix.framework }} COMPOSER_HOME: ${{ steps.composer-data.outputs.dir }} - run: docker-compose -f docker-compose.test.yml run create-project + run: docker-compose run create-project - name: Install Silverstripe test project env: COMPOSER_HOME: ${{ steps.composer-data.outputs.dir }} - run: docker-compose -f docker-compose.test.yml run install-project + run: docker-compose run install-project - name: Run tests env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} - DISTRO: ${{ matrix.distro }} - run: docker-compose -f docker-compose.test.yml run sut - + TAG: ${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} + run: docker-compose run sut + + - name: The job has failed + if: ${{ failure() }} + run: | + docker-compose logs # Legacy PHP 5.6 and 7.1 tests build_legacy: @@ -112,20 +100,10 @@ jobs: uses: actions/checkout@v2 - name: Pull Docker images - run: docker-compose -f docker-compose.test.yml pull + run: docker-compose pull - - name: Docker Caching - uses: satackey/action-docker-layer-caching@v0.0.5 - with: - key: docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}-{hash} - restore-keys: | - docker-cache-v2-${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }}- - - - name: Build Images - env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} - run: docker-compose -f docker-compose.test.yml build + - name: Build Image + run: ./build/build-image.sh ${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} - name: Get Composer Cache Directory id: composer-data @@ -138,22 +116,25 @@ jobs: path: ${{ steps.composer-data.outputs.dir }} key: ${{ runner.os }}-composer-${{ matrix.framework }}-${{ matrix.php }} restore-keys: | - ${{ runner.os }}-composer-${{ matrix.framework }} + ${{ runner.os }}-composer-${{ matrix.framework }}- - name: Create Silverstripe ${{ matrix.framework }} test project env: FRAMEWORK: ${{ matrix.framework }} COMPOSER_HOME: ${{ steps.composer-data.outputs.dir }} - run: docker-compose -f docker-compose.test.yml run create-project + run: docker-compose run create-project - name: Install Silverstripe test project env: COMPOSER_HOME: ${{ steps.composer-data.outputs.dir }} - run: docker-compose -f docker-compose.test.yml run install-project + run: docker-compose run install-project - name: Run tests env: - BUILD_DIR: ./src/${{ matrix.php }}/${{ matrix.distro }}/${{ matrix.os }} - IMAGE: brettt89/silverstripe-web:${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} - DISTRO: ${{ matrix.distro }} - run: docker-compose -f docker-compose.test.yml run sut \ No newline at end of file + TAG: ${{ matrix.php }}-${{ matrix.distro }}-${{ matrix.os }} + run: docker-compose run sut + + - name: The job has failed + if: ${{ failure() }} + run: | + docker-compose logs diff --git a/.travis.yml.bak b/.travis.yml.bak deleted file mode 100644 index 5946195..0000000 --- a/.travis.yml.bak +++ /dev/null @@ -1,115 +0,0 @@ -language: php -dist: xenial -os: linux -services: - - docker - -env: - - FRAMEWORK=3 DISTRO=apache PHP=5.6 PLATFORM=jessie - - FRAMEWORK=3 DISTRO=apache PHP=5.6 PLATFORM=stretch - - - FRAMEWORK=3 DISTRO=fpm PHP=5.6 PLATFORM=jessie - - FRAMEWORK=3 DISTRO=fpm PHP=5.6 PLATFORM=stretch - - - FRAMEWORK=3 DISTRO=cli PHP=5.6 PLATFORM=jessie - - FRAMEWORK=3 DISTRO=cli PHP=5.6 PLATFORM=stretch - - - FRAMEWORK=3 DISTRO=apache PHP=7.1 PLATFORM=jessie - - FRAMEWORK=3 DISTRO=apache PHP=7.1 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=apache PHP=7.1 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=fpm PHP=7.1 PLATFORM=jessie - - FRAMEWORK=3 DISTRO=fpm PHP=7.1 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=fpm PHP=7.1 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=cli PHP=7.1 PLATFORM=jessie - - FRAMEWORK=3 DISTRO=cli PHP=7.1 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=cli PHP=7.1 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=apache PHP=7.1 PLATFORM=jessie - - FRAMEWORK=4 DISTRO=apache PHP=7.1 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=apache PHP=7.1 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=fpm PHP=7.1 PLATFORM=jessie - - FRAMEWORK=4 DISTRO=fpm PHP=7.1 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=fpm PHP=7.1 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=cli PHP=7.1 PLATFORM=jessie - - FRAMEWORK=4 DISTRO=cli PHP=7.1 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=cli PHP=7.1 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=apache PHP=7.2 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=apache PHP=7.2 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=fpm PHP=7.2 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=fpm PHP=7.2 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=cli PHP=7.2 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=cli PHP=7.2 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=apache PHP=7.2 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=apache PHP=7.2 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=fpm PHP=7.2 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=fpm PHP=7.2 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=cli PHP=7.2 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=cli PHP=7.2 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=apache PHP=7.3 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=apache PHP=7.3 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=fpm PHP=7.3 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=fpm PHP=7.3 PLATFORM=buster - - - FRAMEWORK=3 DISTRO=cli PHP=7.3 PLATFORM=stretch - - FRAMEWORK=3 DISTRO=cli PHP=7.3 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=apache PHP=7.3 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=apache PHP=7.3 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=fpm PHP=7.3 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=fpm PHP=7.3 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=cli PHP=7.3 PLATFORM=stretch - - FRAMEWORK=4 DISTRO=cli PHP=7.3 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=apache PHP=7.4 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=fpm PHP=7.4 PLATFORM=buster - - - FRAMEWORK=4 DISTRO=cli PHP=7.4 PLATFORM=buster - -cache: - directories: - - ~/docker_images - - $HOME/.composer/cache/files - -before_install: - - docker load -i ~/docker_images/images-${PHP}-${DISTRO}-${PLATFORM}.tar || true - -before_cache: - - docker save -o ~/docker_images/images-${PHP}-${DISTRO}-${PLATFORM}.tar $(docker images brettt89/silverstripe-web -q) - -install: - - docker run -d --name database --health-cmd='mysqladmin ping --silent' --env MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7 - - composer create-project silverstripe/installer ~/site ^${FRAMEWORK} - - cp examples/_ss_environment.php ~/site/_ss_environment.php - - cp examples/.env ~/site/.env - -before_script: - - env | sort - - cd "src/${PHP}/${DISTRO}/${PLATFORM}" - - image="brettt89/silverstripe-web:${PHP}-${DISTRO}-${PLATFORM}" - -script: - - travis_retry docker build -t "$image" . - - docker run -d --name web -p 80:80 --link database "$image" - - docker cp ~/site/. web:/var/www/html - - docker exec web chown -R www-data:www-data /var/www/html - - while [ "$(docker inspect -f '{{.State.Health.Status}}' database)" != "healthy" ]; do sleep 1; done - - travis_retry wget "http://localhost/dev/build" - - docker logs web - -after_script: - - docker images diff --git a/LICENSE b/LICENSE index d9112c7..fde9b2e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2017 Brett Tasker +Copyright (c) 2020 Brett Tasker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index acd3fe9..df65d6f 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,66 @@ export LOG_LEVEL := $(findstring s,$(word 1, $(MAKEFLAGS))) -ARG=$(filter-out $@,$(MAKECMDGOALS)) +ARG = $(filter-out $@,$(MAKECMDGOALS)) +TAG = $(if $(filter %,$(ARG)),$(ARG),7.4-apache-buster) -.PHONY: all build clean $(ARG) +ifndef FRAMEWORK +FRAMEWORK = 4 +endif + +.PHONY: all build build-image new-test create-project install-project test-build-image test clean $(ARG) all: - @echo "Silverstripe Web - Docker image" + @echo "Silverstripe Web - Docker image builder" @echo @echo "Basic Commands" - @echo " build Build and tag all images. Filter using on tag structure." - @echo " e.g. "7.4" for php7.4 builds, or "buster" for all buster builds." - @echo " clean Delete all image tags / cache using." + @echo " build Build and tag all images. Filter using on tag structure." + @echo " build-image Build and tag specific image." + @echo + @echo "Test Commands" + @echo " new-test Start a new test using , Default: 7.4-apache-buster." + @echo " test Execute tests, assumes project has been build." + @echo " clean Delete all test data." + @echo + @echo "Advanced Test Commands" + @echo " create-project Create new Silverstripe Project". + @echo " Environment variable FRAMEWORK=3 to change version" + @echo " install-project Install project dependancies" + @echo " test-build-image Test the image has been built locally" + @echo " build-test Build 'sut' test image, used for running tests" @echo + @echo "Parameters" + @echo " Regex for matching against tag. e.g. '7.4'" + @echo " Tag to build/test. e.g. '5.6-apache-jessie'" build: - @./build.sh $(filter-out $@,$(MAKECMDGOALS)) + ./build/build-regex.sh $(ARG) + +build-image: + ./build/build-image.sh $(TAG) + +new-test: + @echo "Running new test" + @echo " Tag: $(TAG)" + @echo + @$(MAKE) --quiet clean + @$(MAKE) --quiet build-image $(TAG) + @$(MAKE) --quiet test-build-image $(TAG) + @FRAMEWORK=$(FRAMEWORK) $(MAKE) --quiet create-project $(TAG) + @$(MAKE) --quiet install-project $(TAG) + @$(MAKE) --quiet test $(TAG) + +create-project: + TAG=$(TAG) FRAMEWORK=$(FRAMEWORK) docker-compose run create-project + +install-project: + TAG=$(TAG) docker-compose run install-project + +test-build-image: + TAG=${TAG} docker-compose build + +build-test: + TAG=$(TAG) docker-compose build sut + +test: + TAG=$(TAG) docker-compose run sut clean: - @docker rmi $(docker images | grep 'silversripe-web') $a \ No newline at end of file + docker-compose down --volume diff --git a/README.md b/README.md index ffec233..713d6b8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -[![Build Status](https://travis-ci.org/brettt89/silverstripe-web.svg?branch=master)](https://travis-ci.org/brettt89/silverstripe-web) - # Supported tags and respective `Dockerfile` links - [`7.4-apache-buster`, `7.4-apache`, `7.4`, `latest` (*7.4/apache/buster/Dockerfile*)](https://github.com/brettt89/silverstripe-web/blob/master/7.4/apache/buster/Dockerfile) - [`7.3-apache-buster`, `7.3-apache`, `7.3` (*7.3/apache/buster/Dockerfile*)](https://github.com/brettt89/silverstripe-web/blob/master/7.3/apache/buster/Dockerfile) @@ -53,42 +51,18 @@ This image comes pre-packaged with the following additional PHP Extensions # How to use this image. -## Start a `mysql` server instance - -We name our database `database` so we can link our web container to it. - -Start a `mysql` container for our web server to connect to. - -```bash -docker run -d -p 3306:3306 --name database --env MYSQL_ALLOW_EMPTY_PASSWORD=1 mysql -``` - -_If using for sensitive data, we recommend replacing `MYSQL_ALLOW_EMPTY_PASSWORD=1` with `MYSQL_ROOT_PASSWORD=my-secret-pw`, where `my-secret-pw` is the password to be set for `SS_DATABASE_PASSWORD` in your `_ss_environment.php` or `.env` file._ - -## Start a `brettt89/silverstripe-web` server instance +## Start a `brettt89/silverstripe-web` apache container Start a `brettt89/silverstripe-web` container mounting the folder of your SilverStripe installation (e.g. `/path/to/project`) to `/var/www/html` and linking the `database` container using `--link database`. ```bash -docker run -d -p 80:80 -v /path/to/project:/var/www/html --link database --name project1 brettt89/silverstripe-web +docker run -d -p 80:80 -v /path/to/project:/var/www/html --link database --name project1 brettt89/silverstripe-web:7.3-apache-buster ``` _You will require an `_ss_environment.php` or `.env` file to tell the environment which database to connect to. Examples have been provided in `./example` folder [example](./example/_ss_environment.php)_ _By linking the database via `--link database`, we can connect to it from the web server using `database` as the hostname (e.g. `SS_DATABASE_SERVER=database`)._ -## Build the database - -Run a dev buid via http://localhost/dev/build for via CLI by using `docker exec` - -```bash -docker exec project1 php ./vendor/silverstripe/framework/cli-script.php dev/build -``` - -## Access your website - -You should then be able to access your installation via http://localhost/. - # Installing additional dependancies If you are wanting to add additional PHP extensions or other changes, we recommend using a `Dockerfile` to extend this image and customize to suit. @@ -106,6 +80,8 @@ RUN yes | pecl install xdebug \ COPY php.ini /usr/local/etc/php/ # Copy current directory (website) directly to /var/www/html # This can sometimes provide a performance improvement over mounting with volumes. +# +# $DOCUMENT_ROOT by default = /var/www/html. You can change this ENV variable to change the mount on the image COPY . $DOCUMENT_ROOT ``` @@ -132,7 +108,3 @@ If you have any problems with or questions about this image, please contact us t You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can. Before you start to code, we recommend discussing your plans through a [GitHub issue](https://github.com/brettt89/silverstripe-web/issues), especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing. - -# Credits - - - Franco Springveldt - [https://github.com/fspringveldt](https://github.com/fspringveldt) diff --git a/build.sh b/build.sh deleted file mode 100755 index 19a668b..0000000 --- a/build.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash -set -euo pipefail - -LATEST_PHP_VERSION="7.4" -LATEST_DISTRO="apache" -LATEST_PLATFORM="buster" - -# Legacy support -LEGACY_PLATFORM="jessie" -LEGACY_VERSIONS=("5.6") -PLATFORM_TAGS=("5.6-platform" "7.1-platform") - -IMAGE="brettt89/silverstripe-web" -CUR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -ROOT_DIR="${CUR_DIR%/}/src" - -# Log Level -# s = Silent -# w = Warnings and Errors -# o = All logs (default) -LOG_LEVEL=${LOG_LEVEL:-o} - -REGEX=${1:-} - -error() { - echo "[Error] ${1:-}" -} - -warn() { - if [ "${LOG_LEVEL}" != "s" ]; then - echo "[Warning] ${1:-}" - fi -} - -info() { - if [ "${LOG_LEVEL}" != "s" ] && [ "${LOG_LEVEL}" != "w" ]; then - echo "[Info] ${1:-}" - fi -} - -elementIn () { - local e match="$1" - shift - for e; do [[ "$e" == "$match" ]] && return 0; done - return 1 -} - -## -# Buld image based on arguments -# -# Parameters -# 1 - PHP version (e.g. 7.4) (optional) -# 2 - Distro (e.g. apache) (optional) -# 3 - Platform (e.g. buster) (optional) -# -# Example -# build_image "7.4" "apache" "buster" # Builds tag "7.4-apache-buster" -build_image() { - ARG_VERSION=${1:-} - ARG_DISTRO=${2:-} - ARG_PLATFORM=${3:-} - - # Parse parameters (if provided) into tag string - TAG="${ARG_VERSION:-latest}-${ARG_DISTRO:-#}-${ARG_PLATFORM:-#}" - TAG=${TAG//-#/} - - if ! [ -z $REGEX ] && ! [[ $TAG =~ $REGEX ]]; then - return 0 - fi - - # Check build directory - BUILD_DIR="${ROOT_DIR%%/}/${ARG_VERSION:-${LATEST_PHP_VERSION}}/${ARG_DISTRO:-${LATEST_DISTRO}}/${ARG_PLATFORM:-${LATEST_PLATFORM}}" - if ! [ -d $BUILD_DIR ] && ! [ -z $ARG_PLATFORM ]; then - warn "Skipping '$BUILD_DIR' is not a valid directory" - return 0 - fi - - # echo 1 | sudo tee /proc/sys/vm/drop_caches > /dev/null - - # Legacy support added for 5.6 that doesn't have buster - elementIn "${ARG_VERSION}" "${LEGACY_VERSIONS[@]}" || true - if [ $? -eq 0 ] && [ ! -f "${BUILD_DIR%/}/Dockerfile" ]; then - BUILD_DIR="${ROOT_DIR%%/}/${ARG_VERSION:-${LATEST_PHP_VERSION}}/${ARG_DISTRO:-${LATEST_DISTRO}}/${ARG_PLATFORM:-${LEGACY_PLATFORM}}" - fi - - # Legacy support for platform builds - elementIn "${TAG}" "${PLATFORM_TAGS[@]}" || true - if [ $? -eq 0 ] && [ ! -f "${BUILD_DIR%/}/Dockerfile" ]; then - BUILD_DIR="${ROOT_DIR%%/}/${ARG_VERSION}/platform" - fi - - # Check directory for Dockerfile and build - if [ -f "${BUILD_DIR%/}/Dockerfile" ]; then - info "Building ${IMAGE}:${TAG}" - docker build -t "${IMAGE}:${TAG}" "${BUILD_DIR%/}" > "build.log" - return 0 - else - error "Unable to find dockerfile for '$TAG', Skipping build" - return 0 - fi -} - -# Check ROOT_DIR to make sure its pointing to a directory -if [ ! -d "$ROOT_DIR" ]; then - error "${ROOT_DIR} is not a directory" - return 1 -fi - -# Build "latest" -build_image - -# Main loop checking folder structure -# - Calls function 'build_image' -for VERSION in ${ROOT_DIR%/}/*/; do - VERSION=${VERSION%/} - if [ ! -d "$VERSION" ]; then continue; fi - build_image ${VERSION##*/} - for DISTRO in ${VERSION}/*/; do - DISTRO=${DISTRO%/} - if [ ! -d $DISTRO ]; then continue; fi - build_image ${VERSION##*/} ${DISTRO##*/} - for PLATFORM in ${DISTRO}/*/; do - PLATFORM=${PLATFORM%/} - if [ ! -d $PLATFORM ]; then continue; fi - build_image ${VERSION##*/} ${DISTRO##*/} ${PLATFORM##*/} - done - done -done - -# Cleanup -rm -f build.log || true - -info "Build completed succesfully" \ No newline at end of file diff --git a/build/build-image.sh b/build/build-image.sh new file mode 100755 index 0000000..44d40eb --- /dev/null +++ b/build/build-image.sh @@ -0,0 +1,58 @@ +#!/bin/bash +set -euo pipefail + +OUTPUT=${OUTPUT:-/dev/stdout} + +IMAGE=${IMAGE-localrepo/silverstripe-web} + +TAG=${1:-7.4-apache-buster} + +TMP_BUILD_DIR=$(mktemp -d) +TMP_DOCKERFILE="${TMP_BUILD_DIR%/}/Dockerfile" + +DOCKER_BUILD_ARGS="--build-arg TAG=${TAG}" + +function add_file() { + local FILE=$1 + local CONTENT="" + if [ -f "${FILE}" ] ; then + CONTENT=$(cat "${FILE}") + printf "%s\n" "${CONTENT}" >> "${TMP_DOCKERFILE}" + fi +} + +function cleanup() { + rm -rf "$TMP_BUILD_DIR" || true +} + +# Remove any old file +rm -f "${TMP_DOCKERFILE}" || true + +if [[ "${TAG}" =~ alpine ]] ; then + TEMPLATE_DIR="src/alpine" +else + TEMPLATE_DIR="src/debian" +fi + +# Add base template (override existing file) +add_file "src/Dockerfile" + +# Add PHP configurations +add_file "${TEMPLATE_DIR}/Dockerfile.php.tpl" + +if [[ "${TAG}" =~ apache ]] ; then + add_file "${TEMPLATE_DIR}/Dockerfile.apache.tpl" +fi + +if [[ "${TAG}" =~ 7.4 ]] ; then + DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg GD_BUILD_ARGS=" +fi + +echo "Building image: '${IMAGE}:${TAG}'" +cat "${TMP_DOCKERFILE}" > "${OUTPUT}" +docker build -t "${IMAGE}:${TAG}" ${DOCKER_BUILD_ARGS} "${TMP_BUILD_DIR%/}" > "${OUTPUT}" + +# If we got this far, then all good. remove log. +rm -f build.log || true + +trap cleanup EXIT \ No newline at end of file diff --git a/build/build-regex.sh b/build/build-regex.sh new file mode 100755 index 0000000..d43e0cb --- /dev/null +++ b/build/build-regex.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +REGEX="${1:-}" + +PHP_VERSION_ARRAY=("7.4" "7.3" "7.2") +VARIATION_ARRAY=("apache" "fpm" "cli") +DISTRO_ARRAY=("stretch" "buster") + +LEGACY_PHP_VERSION_ARRAY=("5.6" "7.1") +LEGACY_VARIATION_ARRAY=("apache" "fpm" "cli") +LEGACY_DISTRO_ARRAY=("jessie" "stretch" "buster") + +function build() { + local ARG_VERSION=${1:-} + local ARG_VARIATION=${2:-} + local ARG_DISTRO=${3:-} + + local TAG="${ARG_VERSION:-latest}-${ARG_VARIATION:-#}-${ARG_DISTRO:-#}" + TAG=${TAG%%-#} + + ## If regex is set, then compare this against tag format and skip if not matching + if [[ -n $REGEX ]] && ! [[ "${TAG//-#/}" =~ $REGEX ]]; then + return 0 + fi + + OUTPUT=${OUTPUT:-build.log} ./build/build-image.sh "$TAG" +} + +function loop() { + local -n ARG_VERSION_ARRAY=$1 + local -n ARG_VARIATION_ARRAY=$2 + local -n ARG_DISTRO_ARRAY=$3 + + for VERSION in "${ARG_VERSION_ARRAY[@]}"; do + for VARIATION in "${ARG_VARIATION_ARRAY[@]}"; do + for DISTRO in "${ARG_DISTRO_ARRAY[@]}"; do + ## Skip building 'stretch' with PHP 7.4 + if [ "$VERSION" == "7.4" ] && [ "$DISTRO" == "stretch" ]; then + continue + fi + + if [ "$VERSION" == "5.6" ] && [ "$DISTRO" == "buster" ]; then + continue + fi + + build "$VERSION" "$VARIATION" "$DISTRO" + done + done + done +} + +## Loop over and build images +loop PHP_VERSION_ARRAY VARIATION_ARRAY DISTRO_ARRAY + +## Loop over and build legacy images +loop LEGACY_PHP_VERSION_ARRAY LEGACY_VARIATION_ARRAY LEGACY_DISTRO_ARRAY diff --git a/docker-compose.test.yml b/docker-compose.yml similarity index 59% rename from docker-compose.test.yml rename to docker-compose.yml index 84d704f..f0e488e 100644 --- a/docker-compose.test.yml +++ b/docker-compose.yml @@ -3,23 +3,38 @@ services: sut: build: context: ./tests - dockerfile: Dockerfile.test + dockerfile: Dockerfile.sut + command: -d depends_on: - silverstripe - database environment: - - DISTRO=${DISTRO:-apache} + - TAG=${TAG:-7.4-apache-buster} - MOUNT_DIR=${MOUNT_DIR:-/var/www/html} volumes: - codebase:/src silverstripe: - build: ${BUILD_DIR:-./src/7.4/apache/buster} - image: ${IMAGE:-brettt89/silverstripe-web:7.4-apache-buster} + build: + context: ./tests + dockerfile: Dockerfile.test + args: + IMAGE: ${IMAGE:-localrepo/silverstripe-web} + TAG: ${TAG:-7.4-apache-buster} + image: ${IMAGE:-localrepo/silverstripe-web}:${TAG:-7.4-apache-buster} volumes: - codebase:${MOUNT_DIR:-/var/www/html} depends_on: - - database + - database + environment: + - SS_TRUSTED_PROXY_IPS=* + - SS_ENVIRONMENT_TYPE=dev + - SS_DATABASE_SERVER=database + - SS_DATABASE_NAME=SS_mysite + - SS_DATABASE_USERNAME=root + - SS_DATABASE_PASSWORD= + - SS_DEFAULT_ADMIN_USERNAME=admin + - SS_DEFAULT_ADMIN_PASSWORD=password create-project: image: composer diff --git a/examples/.env b/examples/.env deleted file mode 100755 index 48fd997..0000000 --- a/examples/.env +++ /dev/null @@ -1,10 +0,0 @@ -SS_TRUSTED_PROXY_IPS="*" -SS_ENVIRONMENT_TYPE="dev" - -SS_DATABASE_SERVER="database" -SS_DATABASE_NAME="SS_mysite" -SS_DATABASE_USERNAME="root" -SS_DATABASE_PASSWORD="" - -SS_DEFAULT_ADMIN_USERNAME="admin" -SS_DEFAULT_ADMIN_PASSWORD="password" \ No newline at end of file diff --git a/examples/_ss_environment.php b/examples/_ss_environment.php deleted file mode 100644 index da1d835..0000000 --- a/examples/_ss_environment.php +++ /dev/null @@ -1,19 +0,0 @@ -0n&g#LK2ev<2k?Y!}|r?5AxaB$;{rf*Q{By)^%O`?LBitiG9cSiHL|u z7~Q?|KtyDho`}fK(|dLce|Zy8qb@w`2zX$4OQd?>)*qj=_b0SdX)}GU^{<^itBYQ9NL@d!zM-(w%cQ^cv%P)f=KRlQ%QHYhO+t`mf1d#rPSo>4f{llNp-89=j-S24^ zbG_@=!r~S6LUb4j13V*5-`EXXMGR2Oz{MI+N*MxJZH_`$c(lJkyz#pd$F76rBd*yK zfLCn{Aw!*@<9{v^>(*>M=mfwboxsN`ZX;y#3c!^kzUpmxwe#{;6VZU>pS_rs=>)$e zj=Ie9_Y>UZ-*8F%ZG_2r;(9tp_0JXlv9+-&e%$`L8KR%=;hIyJQX$&96$a!rFb!q5 zhfHO8><83o>i%TV^lcY))_uF8O(K~%j3%{I!dnz(m@hX_G1!qfzXQ)w6Nb1up(WXl zxwEwPUYFt9lXcz}I;!2gKLfp4;c7e}*rxkA#of#EV2>-f7rat%AIQ=O`vq(dY`-nP zOffWEu7^tzx}_vWUaD{6cawl6$pA{VKy&$OGKl#Ruekxy78PEpUY|c)*CN(+WyY<& zP+=(&BffI9LIgB3(o-?4W>d{i3|!dH2sA_a1==MRq1Tj_f2bEFv{nkRO4dBGPRMe& z>D!AVInR`S=$ia)GaX1*hb~Wx$-Kf|FL}RR)Wu`mZtkV-oLZ}b<6`92mDG)-sOb*K zR(s){Mf6F@hy|sa1_j20b|D9b`e9k?PX1NaFRGtUT)Kq{9y%mNEHg)%4i@1FOw|C_ zQUlF}unGya3$~j6(Psl+m$1ZqU+&cbuX-`uyjo|CsW`dN)LD&@7NbvclOq|6%5IAV z>_7KWaEngOokzk<)Uk>)t0~FqRke)QfwLp~0~e|+mN>nNn@Ex_VL>NbIxyQhvd=ER z&aXb>-UC|tF$`REU}tm9dDTYIg>+ZEeA5AdYX2mdGI8ilG`+AY%%R*q*^Yj!=2OO%yBzb z#^ANHeCOKNW@%+FAx5^m&P%#Tt<=s?x0ls$OUbrF3*~KXXgff z9KLY-S|%-#ia*iWyS&8HS_Un8@wNw@s&KZ5;dAREt(yahS0q_=1ykT?{s zZm_B|`78o7d=MDvTEca8f_r`$=DnKj8U;U{+#9elzv0q z_{PSHR3PrG(Y||oyP<4ZVdodB9)WwW{Ya3lSSbOIoW-$*ERhoT6K4y8rsjEp_MNDp zb{!qH=TGOWyA{Ql6NLsm>=|J9)oYa4Xa zk@;u&)JvFM`ZqETPW~?lCY}1z+h?D`9^v6;=B@u?WbyyU-_jTK7E=+@x8`;UM;e$b zdhp{FVYj>D#($mO`~R1p-W!3=C#NP?Sc3XgZ%qq_Umw<+Voa2@S}aKD(T2acmgrYv ziqc751}VVCZ0)si*;i*W%0$OXYb#A%@{&TzeUb$-0caEx5hOrDA^sXeFKe>koug@6bbFt#_NR% zc6-o5XpzgK_0m?B9!GMG$G)3+ndOOo__G`Oysd$AtjecnA#zW2QuMt6-u#9_=E2CvC&r(}L-QrtB2joJddzAkP zUA(&246r}TXPsI0gO7x>GmMGXu$=+qLeUT3{@m*Ou>SCG-5%{`FK?sOkD;y*7lYus z;|8smM{jEr&NK83m)EFI63;59gJnD>-Wl09K6;tVw!iL|vjXRhv60Cx`(-ZGJ+BE` z!q>Rj6N>_RA(6-JPEvMS%^C&GI{Bt|ryRtH+KF|jCt7BNyJei23N*H;-qQ?;VfETq z4@2-2ANJz^9{a_yL4mejI!(MICF<$5MM_V-#dNgEXqI16D0zFFhf6I=q?IEp%m=p$ z5{J`xtdY`nkeWZnN7a)gyU7Ma-RG7|mZ!AngMDDS`w#)*HL=Y$KkccI@i6jR>bGd$ z_wSWd7uVdoKjQ|Ti=A^crQ9Gh5dCknLiag-lu_1aOFIG--u$yyM8tj9Q3pD^UDFWo zvNyF_>k{Lu!~lq3JO-Fg4xR7Y;^96OvHYrWD0{OgTXw;2WMk}Zv@N4-4goW{kA8t@NjP*e%0t$~y)`#Rj&=8JwOEz?ag8A>~=MbJ+`T zO+Jfufb(VQq>@ezr~S!yeiG!9$~^8oE~Vx6d6nD^zy{mii*&WHUhEH;X8|ozbXy9F zZR8370PI~$B*tb$bG8ua$H(x9-8R42bMK?n{HLna0<#;aXH-`c+X$yBF2F*Kl8>6_ zRQ3%^D@Ug+0Q7#W7p8JPZAt$Qm+OM~-#B#VxV+G-cRzGFw_NlT zd`&0ef$OAOQPA#xKHYcimL9{US4Ge366RzE9xQ%%<%X(so^Af3Y?1S>0jnRE>OL^d z&QOEqq}ap3+CCYsW7v{z87t54*BvHYx}5tWxJ!i7w<*-r@^eYKX*l-pY@4Pl6CR&M zqm>bHW{!Jfr>-l!QPq8MwFdo7Bh&GI)mxgA$P1f+<3BT{IDl*&hq&_+mb?+}kE2oH zc9Sl^{!r?{{u5Vk#kKJaOyK+p>}BtX{OI9We%3qd?|tzHQo>o;u2^2mIRq@lz`G^y zoFLRkX^Z4q!<9EL?qv?Ar51Ly*;hCeL*SrNWU)CRP6vpOwhhEzBu!TsK_ZYYG>L=P zTyq|`tN!|ZNX@xF__+I#ydey=oLyj$LLt4%u!{6gE!D@ZzuNyX;QF~65Ku{vKEx2vk zymeUZc*t8_I(xj1h&}#9x6|p!$H(NVimOmc=>$qX*OUOFm~71@v=7WrU1ZQ)dirw8 zLm4ujqiJO;&$)4v`P=?g*a^117ujS36J$ObpfgL@7Q?S?r8#XcrZ}knw(y#mk`4KN z(0+YBF}VA(n%QMN-)Vno(|W7t3ujLV?6Ut+xS)lA>+oIX05Ji^=Dz7Y#|K0|{3u!S ztOy6Pj)ZN+6_%u(FGqg^RhQ#o2YTa#`P;=u5KIN(iV`2njxj;U+ z9S^aDAe@t54orPdeRVHIr#3zU9VQb$9%h0OkpTJ0N_e2qt;(PB$b2IN9fK;Kc^(xJ z%2TT-49`;l@|=lbXpMazn$0$cArV8<7QnHj3gqx=|Mj3ouOlB0$~F$l7|IvPqqVD} zArWPLeaK|?*7fCdSXFJE&*uYnotdGvj_I?h?#qdgC9DWt9MJ4Jzg3QNmbJj{GXyD&zQ|_6#1L-F&9aHH1}8Zjj2Z^=ODWJ|tUia8Lq2lAA1eB!xG7{CB|M4h|qdYw5lZ$NJ?u^x^H zE=iL7lVn&1{*tz8{Kzch-;!YErU3Ma2cQP5?BExZ^0R829WR8wQAMcLk5ffKfG{j> z_PBSld_V>1!<1hIQW;|!0Oa;vJj;BC$B;vACxtG%cZchqd+-4>nr^Y6gKbo zUafqaj@^opSFP}?I+qPgfrVV>eniEqkLJeejJ2(J!Z`i_iNCM>P*!p3gcX#HxVm!^ z>(tz6JC*Dn&>gcIE5R9pPpV`^kJ&&kMAd@^=Q7|d225MF&UADrHS_#rje zPv@~cDzCwiHjC_CMJ25FIg|Yyzi8)ytc_+zPH?W8Q#&H$Dp}nv+?7T3N{xDEC|`#5 zLE%43-~%G)3D&U&)Y`gYUTc9XeCy>=IJb(|Yshnp>C-f=$(W)aGSek_bN$u1Dt9xz zD**{N9D&-ib{5kFkQNQrYBTkFXBB!m+TP{U{)XU~OVlQMyyhB3Jc!Un9OTNwt38O@ zg<|_+>w&<1gox9%-XCp%vjrI*kAF@f^}*Jv`2*oo!!{<5qvhuYX0?A7+;2( zoD%Tw+;WEI=xu~274IBFM*{3axL);B-MHoVyrcfHZEXYXch@1_G?2{%4JM)|!3k z$yd2_x72sPsOrNZQhdxm5$Pqc*Y2Fa{&2DqEXX6-z?M?{_=L|RNU?g;%nFkfi*04e zX%(*I@C?;!B(lKse~ax*3xR5Gihe9yj`mOiuqxIF5?G9Q$K zLygGP^^htQbpc&Ba)J}Vxy=38*qIY<;b1eJ+g{D@$|1Cc-!KHT-U>Y>JSd_zb+JDV zpuWgfLx^813fPdtcull~(vpU6?mhF*<5*>@$jak|1Pf4isCSX&X4ow5K~ zOE_5s!tXtCa9|3BIsMD5H+$lcI|!wBP>U7ckj7P09!)9!5-b9 z43{+A+4Ly~3wTT24_R2!>*}`Z-FzBcZ51vs+$A8jQ3M&dzhD7eAA8k~Fxz$Iqn`5KLg#N>=CqodU zVjy@dXaLdX$j`Cyfmfs3wm%%b+{JLTU+8mWsykPysrq;NSOcLcT6wDfxl3Hqsa_nC zJer)fBLvd}wo!`xR4A%6Br{|202%_Su@jiK>W-=BTi8d2Px%p^y{PjZmzoKBg>u9s z#AYjM;qYj9JvWU+%0mloBAXU^jXmLf^1A%3gf>y0x6T;Nt-57vpGBT@{qHzW>b!1@ zB9-x3S4zfEL)ew|kq(4&Je8}W|L)&5qwQq${{X;gWa5tam zN7bs7sAtX`&OhkjQ|5u1&4-9fH3H?6>^zVB72p)5C*`pmAYMMdChj#aiyVB0IuNG> z;5)8QBPSV^Ih?7Ynb9(IDpP|=)Lf_r1a2z!J|VH(=yhQHN@h-h6!4f2(f#x#rz3Tc zjj>}f9(}dlIk3ORrYcwvFISpDIx$2 z9833g3z#{gVi}yXs<{}RtJuPGC~GxGw;_M{P{45`$V?10nTu#!f%|v7tSZ0oklNb25jB5OHbtvf!X9QFKUw8S)Op%=H2ygx9jks9 z6!KuPMrpH)$Rr${$|`EF=G?PweIW1fXuFxhW^1kws|WR^C$2Pk&5m@;xONVZ64{l5 zi(FzAQ_HdN*&%F0m_zAc+6m)rZN1~$pHs9Q^IW9-Jg5%hE`2i_{D6GbIS&u!Va)20 zL;qP-TcNA`%1Xp5D4W2sU5Xk+?sESu3Y!5Ljz_V!QPbdcYZOJ>4SQ_jW|YF+v$WyG z8m@2O5V<771G9vL&rE|YHvCZv`0H6t2Xf5p^LNMwg!Djf(92R4IQe1ns6AE4gk9eZ z(-rj;tLh_it}VY&5-#0dsJ=Jv(%6F+BDw#hJ$dYFp|iwltMiL}6ahE8c&+VGAnglI zbs@G_?a8NjDyBSL3)}ykuc5?SKF{4PxtKBz0fj~z&>Lc44wPTy%Iam3Ux6t}whl$3 z1-V3D3f`_@-k5i>R=A*gj-<_rXWn3YWV65g!+p@)6uNztfo$kMqRGw@-)P@RryXqS zD+&c3K=llCKOj}XP=|2}40rM6Y(`P~r|Ia}sDJl4(5$p``nVeO=o6lz?q|(6 z9g|PUFXR3Sg_KdkZL-C^NY$INGnfh4A)YwvDnYv9W*UsRtt`=yFr<9RFwpj?vL8Db zjYS~8^o3fwp*v*-8mAEoX9EfNftDeh?1J&ViLW#JW_O+yQ{#Yj|4L6Z? zVqcmRDN$?XO+Es)C&2gJYE(qnntr^-(oG3)MYb?a_*5L!a-U(C&=>7%0SO1s}34z9xw;)FL@&&6%>|i_Q z#>nwY2PeJ?l%*U@#MB%kQ%Z@ORAKq0;Q7`eoT8!~049{V=G0nlqT%Q0ro+ZI-K(;b zAHm53n!O44njAWgJxdKJzQ}1VaNIk&@N0EQOw4%jBfzRP(e}kHMEXvV!`bW^?Zwm} zNqe6oFc^b4V`vh^Zq;8j*t6J32yzJeOy^t|7KfX?70Bz)$utgxc6Q|R zYb3*#{NVV-sjRA~a?a8^ZU2*A(;G$uBI#Da>D56YXg!SF)2MT%eC5E4S(~J>y5iL*q~DY4zZ@uz@VasaEyaJQS%otMtghI3w<+^eRD#=Wym zn6&HY52wy3_$pYlCkJe8zN(NR%YEv*#4b79T@S}!IKw^pI`K41`*&MZ_F3EAiep3E zq6V^j32l0}q=<2x+D*uf&|28huI+CF%OFhCp;%l}mWHrCFd}975T&Q4Z*ek(2+KF4 zPam_ZdM;bKKDS-&UccM?cMy3%)0bW_`dEMoT+x}AhF!m4RJ~O55Q>ZCw8veV#SLaDP+pTxBPiQszzzBO-ACbcs^qNfw zE#I7)Qkxqv;8|;5aCaAs*~#s@mu@bRCAWU$S*#h{taW0f+O^duzs`;CNi>f#zeXZq1xd|%?0-eDmQnL(j$AuYHA9ggdG zX}3t})ZEyZF-2%ybn+-awh1%v=Shzj0{&)2?@pKAC~4RjG0~actK|LG+BJf6E92f- ziSV18CD$^65bbsd8B2shRM6WF1t9>!(o7GP$gX?(Bp?1GE@LA>h$@czU!BKN1A8G- zLTAmX&>48%t$fS2wPoAwRp0tz!czxYaCF$1Bq3k_sx5H)+WmB2XeZ4A>x`!SRBoBO z|8D|nVikEAdqU(ns(v6PscR3Awg2u3&Slfn-Nx_P)<8qi#Q@!cLoFLhC=1#%$)(a@ z*Yva#M}PZP$#M?dmxE}x#HqjwRh2CEUhDkXMxHjF#5w_E{}M^sS0Spz=Xha6({W;QG4G-nkTIK zy{6xx@r2Z}5LziYLBq=7p?+7^K~3uHUi5Z!bd5sEz4Dy&s`XDfLt#^n`4~-}p^6)C zg?6)R`&dsP@a{Fl=GzHGlQUSm5A?jF;J?zWUeqq-T~n_{<`aoN*0N^J&Asb0n?7Xj z5x#7pk%E$5GvvAFz{)#3FW4^bXxa|h?92;kTHT@QDsNh!wG(CnKeuA9$xc@d>daim z`v1)t#gj*FQw&<+fL%! z;1&53p1mzYZJO~|`Ap2#q?9KHf=Tie z;^raS=ijatEx(8(4ox~h$^!tQrX$$KSo5uGHxk)d59lU^ov8SkRCmn_DnFG&ejQ2t zZ~r-K{QjbPGZ7K+D&fZXv7d$}@73Je$k{4N5)waCO$jlwf-0$L08h8+o6-Xba7qd{ ze7G!RW+6P{;$q6wMCJu6n~F(n5`ZsLnqflmteD0OR3)vlMC}-Mtyc;!Ds=5RlBeC~ zw^!uz6D5cGE+uyg z{N{Xi@0=V_87*6JvVVEqO$XZFq3MibG^`z!@hB<4EH!1utb98UzxaGal%bJ7?<<$z z(Aa7mlk+sjAVODvbMvc1aEuE!+#)QPc*ia38jkAM3R4zXUog}EFE-s*=&E&op&8cp zWyFNC2YBO!AAFd%qQx}q4>DZaAHjam4ra$lHo#@fH;VTdFt4F%gEcp!*O;{?#ZseW z`S68-5A(@y`qe`QR_{dkz5g|HX)2==s}`K+zaY>rQfwd?u~=i{@+7o^^UH{1Q?@L` zs4leIK3vbkb8qbyeZcVG&KDow+oA73z=3(Nn5L^-N|6wIM_Xp3H!pu(l35359DU2y z(QL3aYP-JX{r<7?*UWnbrik96)P!2&H`dCg2d}!lnbkHqj@RE06j<%j1eTB!u*Mjl z;EYK>Xml{J2xE?RdZ!HY1yhu2aj=aOKD7kuhCD_lpF3qU`ikxB55K?$w#rDIJ+EPG{?3c=J@2 zRG@y-Q@gjVull*!z~FUWggo75!aP3}DW;UpK@YGZ9(!QZB1e^o>D8_m^bB%^dD}eN z@|8$#Y04OxBnR*uq{B-NI(Qe0&39rBWlT)_6-jCRklJD_0M8o{4@baF`m%m;Hnlu@ z#CzUFfYU$VE;vPq;{cxu!$>k2c)-J4IuQz)8E6KJ`-R5ZfViqY^_^7BHRgRL70DCp za#Xf`#)-4{n=+wJJ;r5ZQwD-eT(?WtVrUh97LzyQXj69S)mkLwF%<#KQ{9ChP;31n zr;lb^^It9HkRa`>EW`b|57K<`#y3c=A2(z~&5)WOB=|Ytw;)CKt=?shu|U4d06)Fi z=FEvf(@Uvi1K3ZQb~KThEj`Ef?wNO|X|Ccq(-TFj@rTwQUIP_?n=MLYKR5dcY#(5l z;!E{h@KEV;G=9ibp=%Y9UK=}@j=^;Bz%vS?)nq*JyBx?E3~KE6RLCF+MJvpc4Z*)S5j@sONU5M(W6E*K z3+1gn-57QG0u*Ao92F)tG6j20&Sn`b&0x=N&c+mM@XtGKtd&4Y1#a_dk5)w`&|1XOc8it~dlb8< zl=k)LlYZ6t3Aaj8n5+Z{8q^=Y9i~JMNxen~m6;+hxp*QUxDH0)Pi#NMWF0;6XYUoV zT~%fV=@2Yly@Xnb7$Dv=k(;=k?#61MKS{Zo8Y>ZYm*eYRFkpNcWba2j?KAhAPW2xq zxBgmLqmWnp`7Z2R< z5a8F`bPEsRLhqDhu}TM;KGzMDujB_PFXxW{O7U;qfZk^Cd!1Q)KiP<3-lQN6(?I$a z;z^1U6jd=>L7CKmm`2^-kEx+Q6gBzyU*%!0=9HqRF<>?pPkH)Q6F6oVuy_tLgZsEV zLd8M;fS~c0i2D1_nLgEJIQ#xxvnoSw!-w^`l^Bcu&t82k@zU^ZE0k~bLoCeA_=Q(K|Bn>6|G-fg9`tn4RDasLIN+ej=&2c&8gf`o z!{osjGZta<*?NDN6r1H5?2EVK-oqL8&U_v?Fhr~SZXXb{dN`0>?{XDVbB#8`7}=M&J{+!-!&EVcFXmsz~a z3~5Txy4?}YBteCJ-!^15GaPPD#hDmjat6(`C?Tx|@#%BAhoY6X{cC^7t-48o7ZQ)R zcG75exx*UdLot5>w2)TBpE=9Z2B()O&c#{W05#ec(;IBac9hH6-G4~C74H4)>Sneb z)&FPzq&E?6S48rV4bz8Y`x735wtnMmCc5Bp%Qhz}!qc@nsnAjCaV_ji;#aq;sMCT) z1j?gp(#x|;)60u9pWWcCS8K8q`}Y6tYx6DqBm6mO>)WABNg+X>t4cP34nbT8tVtzM z@(U+F%a~ns{0$qB6B=ismQ?!9pLacHXDu_9zLeBu@Fk~yo(uA3y~hUN~p?13b?)mr9B;QnrDKnQHVgB zlKYy}YTO2j`+E7CGKAcdYELte;O2~2dinaN$bo#EV0d2%7_7J7e!HDz&*=qlesCCr zn}o5!AUvKRXfYEKHU5YV{J)rp(4%essWZ)3O&R5V*_xX_XW5#aGUj-pKd1cSNU_&c zY+U_>E^1{Zr|2n{{7yMyU0gPRcVdz{PHxcefHbTnz=vEH3_Ut;D-VB_2_Bjd$c>zF zSz4_C-oy0cMs&mx)%+8_g^y2Eme4hIa_MqSkUxw-6yc%SAwlqKA(@_}b9+=Mz1U;) zw~#LHxeU4x57Q5uKTsyjt=32Mjw!~`CLL9jXCDAVu-3gRWVICrpn-F)#FKCc{rzav zkrNdnLD|JoIBFr#r}h({3+LOqxVV@{Fi!B=1S~=Qiv0=C&ZvPQBh`R#ub6rG}!j6HE# zf_%9ZUNFj)cHuadxzLH_2>K2Ev+53(PLkVoi|_c34e|#@=memVxZ_rs_tl3V%EHzi zKu@6-)J;-*)i(yDdFSt5xPS%sLbkHT4wit64+;1Q)z2SCP|zvoONi=VFF)vq>gBCh zSh?%Q^NB#4U2uUGj7b#Wly3uB;rf4SYQ%5+|6-9%WkiiC%VC+cHr&_U)5p7C2i(4S zHe?zsWL!#~rGm>za`ZBy-_zKH7H0eSlh6779YQ(ZSi!D9db`E)xKm=h(#>;=-h(cw zpkgkKUU=5L&7g#+_IV#(i4|v_MjW9s$}O-53wLex0PljK|MljY)F; zc^vuRB;HA3?HWJsX(D0ImdbeAV>D1z=P=|`!~4I9x|?ol5ZA^wfPkN3cW{fx4A%MLmt)^)gGCV0xM70R+{wY~!m zT{t2e(NmSPwbXidw`j4Sm77okv);43GjG`c#L*gfg+=&TZ*I zNQ}f-+AgWVm^NOvoC8#-P{c*lbUe~8TvvAatzBB0M5=2BT>BKeXHwijxewr&QsX=Bcj?y9R{qjpW5+MYPfD1p4 z{u-9SWF;`^;^l%(+kd4FSR<%#M<;HRga3rn*%*9bw?fykRc>Y(a-+US+Nz-E%i8yo zw!88~i&R8JPG$E2INNNXU?`VKwdQiIHz;{B74x5f-&3Me2AZW3M}TrwLxo14vS1F4 zrj{k<4Y-ZzXPvTW_F^Wr?zVjR>PuHnPv_E5K@er_{K{Z?iI7GxaUx`2KE`7Z3r2Y_ z>NaQPZ7l^ro{^@6>=@6jv0 zHyTuKs=v3qQYZzrTu#apO3LO7`-S?$LaTEH8lSMEiWq812%n282YKBN(qMo=f+vg_ zA0>~0@LY3sAUt<1qJ3$9|F^INTk z4YfSc^xDCjUyUsHUaLtwk5m1~`J)*uN2nNnqCsz>8j04n0^eP*4LIBiX%;+qJ2iyR zfUF#cWQ5Vq&IkP>VwT#afc~uN$0n8QYfA-*o+w`8&|B0-4gS;HN>pCjdZqnT|EcGmE5D|#@wOswrk)0rOb)3@mw zXI0$?Psu{3*UE1&J*|UtK7t7GIxy;h+^-5r&>CbeF*0}E$&O&mpvyxPs5 zh+NQFJeos6e}g!zF;ROJE7rhTP*i$XhH)%a z%;|?aWe3-xh$O{ZE_s??w%+|dk4^>3naYy~$x+`Aol#;xW{TM7KI zMVIojvY|+^{nM@S_DxUoIGf~>x&d87Ejm2kyrltI9p+KvyVQJl3?Mnoosk zK^7yaAd9iI^MFCa85({baNu*#pf(h$t_?Jl0!_4Q%qA1=A(>iBH39O&<`{6Pq*iwE zub}y}sk7`q3Gg|DP*kMlQOADk{x~mGzimw-qk5$ba>@lc;Y0 z@f&v;Qv8y4TJf?luz*(F`iDookVAijOHm=?dWnu)QsuQ~0^wsyv5(KL)f_ns9@EfO~FFfkAw2=NXe!<*~VrxXoTboBPi%FVUnN zXyDQ>L(kM*=3~$Be6Z`0;{nB_4ibd$>iocH`AlbUsG86<&XRd~K&}(6^wB?FAIAF4>Uxq#ufYU?M+l5T=UC zzH54{T*ESh(a>;jE$*I5(kTG=*t*2h{6OUQlv92aj{YO_#xLq51>4OxrciMPO-Z4N z>UpAKsfh^n+W4E#{FyqKcOd*+!dceIak5I{k!io-VGrmzq2P-bT3Md#Sy2hJEe*@p zYHmn-SQU$JA}SO&_V6^^J*qZIl@FzLAPwcUd^z=ARAQUO-4A{F`kaNa9AVVw4A8$U zPur>awIHq4wT)vyYbmhTzkit^hA=05tE6mwN@S#N7@~A;oNKICRkLlm0U_yV-j~tV z9Sf~=6XuPovcb=6sR7^ZG&xO&f@sa8<=S3lf+7kXN%KGAi&`CsuO73 z*j05{VMF5$eH3xCK7tdP!hN@}*8Wt8&sKeO8W8F517xmLB_A6%vbWiWe4c!#(Djei zQ|Y8relHM;(!V|?wTUh$UOLANbI27H!`)Q4tj7$eG5*qJ9J+8f`V(*ZFPG8_7bONB z{oreK759YIv-NkkCgl!4fdjt*_uE`5ui{K@U(i#Cl@`5>aOtgo^i5PKnF1f5_6;(_ z=01pv$jUq2{=>6DLXx2Crt2Z|Av1?rhoIt$ejN^&QC3 z924+@smYd~6nw7;`pQF$CqhR6u;5}H9zZ5&OskXqugWJ&Ne+GMUNe3!9&6@hkkf;IO42;+agG~?mZIW0k7u}vx4eq~rc zo6=bkg4ki-(ljVbyf*xWTXa4+VaCAm8ctwmui6R1KF??tjn*X&Kia!bCTBH}5fnc3 zCOqNX;SxuEKule#!>sh-=I_cLdwY^g?rOxr6806=Fh04O)R! z8^9j$-N-qTq5k9*uQ~PYr(%zGNkgv@9c6rT;=4M(H-l?s@?-4jn6Z$4i4Fd7@(Q~h zFjSRj797{J{!f8PrT-?OjfJOmf|0T;Exk?w_1X-3ToEmZr#~U7yTuAY00*x35F6hJ z5LP7Q8nNK}3>?>y1?FIT57sQ4RW_j!9b2p0Y*4`M=4xo@+t!4h&bE;s3)Y%jrM;@Y z-;%z`|LVSMx!7M@swdaJk*p1s6eo)O5>a9;X-lFV4BM+-SjLdiWaSc04?Ol2@Q*is4Li;e(oXG8iI?VQ zc@zxYZRtxpU{oGIYvMqMeU!u$W-8bAbP^F;<{*o<-ix=W_>q7Z2!2WBmM!z4yWq^| z?W!Q!M(X~C_Sw#*t&xfiBpg^ln3XR`{Lx4F#5)1^B0FAN*)(lfw5A_*(4G5Ov(B{4 z4r27G)REb}3dpjVbDb+RE@BAK*4KzgZAnqGUL0#XhdDeD&pTE`k9oKswJ7bpPybZj z*U(7m!(fZhl8ifUk(4{S7KeoEY|^m8^!w4In{x@hcGrn5Z;kKe)E-J(oC0G>=k33D z#Tu`vR=>Zo>k$!W`uz92gg51@sV|n|o!416GPnB<(}~Z%6{Q3P{rdWR>v@YymSFcl za5Ssv%Y^~0T_58xGnCwZhqg~kjAL2grP^y;4M{T;O8$AD#y|_M!f$pfa_9@IRY)5p zC^Yp9t}PtvdW|sjs)>8- zYro1~Pw3WKq}04391B0=^9+tVlgMVOXe;r#$5}cdSihH@+i+w!&X!Mw0;TduXBV5a ze<7kM0fe1!#EYX1KixdmF+B$&?xgcWE~qS>9wW3CmdRw7>%q5yW;fXXD5dkGwCYp? z@Fzh6R?Mhx6ffu-v3k%~{3OzcrDGQy4U@CjJ?*|wo;VbK* zd(Pw~K}2+d0zHC@Iw*}YwOP^#Mno;KREn=`B~I8^_keyV9-ztOk#K#UyaUlGYEymH z#2N5cI^v*k^1jTX95K`LdEnwIu33FB@v`j^5DKm{)aHiQo;9As`u(CO(?ccV zv=e6;i_ptgEc(y|Ky`M6ZhNPkG#K?uS?2k44z8_#iB<5Ecs^JE@~2{0zA61uS?90e zks}WX*@Y#+wu=+H)JU8v)y*^|Ro17UfPX+u?ls_w<%*!|8h34p%p~+i=~xG0y1G?L z!^nXaR@xK7iBslSLR*#I0?-So76{ zMs9X>f3WVIDf+Y01kGh_5H}G%MW*m34ojrB+&kMgP&&}_#=~ZBM%w*Ui;U;zmL>)` z4Gfwvv_U*`VD@mhO9ISe=AdnBK?CXrSbc_5S}brs(zV;A@T-*Cii+M!#OL}g+Yt6# z-oG@fla%JIT_0}LM9G_Mt#!TV*dt}1zpLx#iwmx3rTUz4m=u6~`4Bkun5sTrUi|_? z@rwI?NoFMXk<_L3g0JDYl72f~%$o^c{p9j9i3{=@V&a&*O}i(oZsbeSH^KJAuEDe* zF*%FRx==6_yUOsu#te}zq4~m&7Vba_=`<6%0fDcXg@tE23Nj( zbtH;N-aXz+N+5V+zFivp(AgsKs?D#4n<}6`oW|+fJfC^p$``&7Qub%DU0K-W0@gKH zX$hj-)Mj+0*oO-e?61#hc%4LGE_%Lmm0-$ zhKZMu!&k-S$`sYTk?I1vz>3RF-rPE;wX)>H9QrXuD=}*%S~$?cUj&Z}!MD{e%Rpua zfsBV@%E>0MO-_u{7@Yx84L5EDg`4hJf8b_(?+{KjU3;n(g(dqtQ?7QpL~K@vp`j2E zA)rk8`L>o%4bFPfBXMNonc#6KT+j2n1>^$b8zjr&QKxr1;$6Di_&h!!2aRbz_;L2I z+3?rflw91KW1nNhuhULlRQKI0>FND)VNSgD!{)2qfeEYV_NnVxp%nOz#D7|J5iL=T ztJvMFuW|=|_$mq*H2IqudI-Bz_^Qm`rRXzLYp}M+U7drh%jOi;&^!>klf2IB`!4AS zqri}#6GkTKUEZ`WH=cTfThjN_kQVN`(6(UaJX08`+rPVrh+PQ%`_jdv z@ILM$Bk-5Xy~Vnl=_uT%#R$6cL&v03x1@`o&xv0-7%J|Tr}uRF%emV4pSeGdK2%oy zt9M^jr`(lj)DdvV^jb7iqwL&)$(@}UcY+;UK{QTX=ZUZgN@tZ`F8#%sD5xO7h41K| z>+?NAUWZSWd9K{AIZah97S+#D6kth~PvNjz47D;*wbfmR9d=Tv;)z$UAm|!#M<&$e zp&1u5Eyk3!*|^h+Pc7W#j;dzUe)7-_ zhK=dJhE1b~mw&G^NknPDUvlz^ z_@u-&u1^&TZx0W)L;WQt7YBh)J1wU5pU(7_kV zw&;&yuAYbpKv+ zYAh9veW!t8ba+cZX+9F1-uoQyF>AG_6+UXeC*hvoe|q4<^Xh;$+a2e#9$Q`udwkD; zAUI$AQ}z7`1Y2JUycWr?o4U_&pV_oV5nVaI$V^{n?qJe^9-w2mR z<)!uPMvc`lpPKfoVP$TB{!G*t*tz4~+A+ifA9w4N_BoI$uv2*%P+oDyGydz0nT35W z5joyE&GDCQmEQcTDo9o7dUIlw4Yzo&Q@XcrUYR7n^j%W2J*x1JU)vAJEs5^FJ*#U# zm?vWE5`~Gb8#J%8YR5yYRMOPkZuh;reFn6z?&5Zti|HpSupWLTP0xUxbKMs!${U$V zEp1o#h0D*I+@5BsEOJQ@yuC8>$DXU?I6ftPqTHXHI79q9kNq(@Hw|G+Z{EWf5%UfE z>&7`-XDE{|N{W-K5V$FD7$=|0U4Awt;m^`}`fk=KukFwWk{X(~)!COXK{5Ot+W1}P zXawIWLYD%&@VxIPqdV=yDIo?EEqvWl-lJIUCX2mE2wj=p6stllV^^Nz_BYq*f%C4y znb)4>ylz`7+l}x~&~<1>bJkv~SC8y<%CFUg31C%hbbRID3fYZ&3 zft<`s&><}kySbIk6`I?JFxmr2tsqqx$HGkOzLW7lB%%;<&f}MxpC@JDgu63$Om!ij zQSUu;E2Q{8ZNBkKOYN-x$KHEK!`**vqmm#&5G`&*NknhaB6>(734*B6Men`0(NYj4 zg3*UWFA=@Bgy=oWXrm7?42BtF81I+dzjoGHXFbnz-apP+>-}$x`ObX$=h}N;``V!z z_j5wuh(7G+cyObllR^oYp%ewH0r!qm;VWNKI+CT?_SaF)cHBnm4he-g7A+Z%4)Cfx!FwA#b z;o4gKF+8>dk~0>EsFEiB1*)h(t=%C9fvVpcExd#{HAl)B1~`#REozVlRW~W63==k> zuqx^g@{L+#dA~^eb2Qx@I@$T$Em%0oBz-HFQrGk;vb-kLrqzak4vi*7%9>d>1I;S;XXb8>lR7z5J_*TsH$TL*gv#5;Z(Ic%s2$eoAU z!wD1c4)V);Czl?MlY?YhcRTa?(S3m9v z-Bay95tEtsTBxN!p*w5Yh^21FpV4#GRJ?RHy*RzPJxi#$6muBQ!yqev?+cSjG>;HK z*<_7V8~IeQ@U^aP+L-lgWAehhE0gT$RBYqQPH5v^0~C!sj^wBB1LE$RA$>N71p;xu zUV>U)K@ONcKZ(BC^mM+N^K{#jyjFQ+5l9!nZ;S#rgn`8kOTh+`j0#sFP^3}ty9jeZ zp34Mc3*|6r8=qz6IQeyc4NQ10!{nk&T%HQpes@G_+h-(l#;NVo!C2Fm$~+FEh|6&= zOtPug_v^RtMWN|F--b!a=YqM&8;*5jHY7T*rSVAAlLdG7(iD~D9mE=+pl(IO<|gam zuGR2HjWNYIZhKM-R&!rFP99Q(bMZH1hNOLUFg0Q1mcqLCR#jC`*~Qsz4^oWoahVp! z;mB)|Z>Kc#P5j;vmp4|v{aRHU%=}=)$Yw*0=g)N9fZ5z@z87LD2OV~GWxhoqmMJ;A z>jkpPnw4)oNlCeUfM}g0+cg|QHt@6?-NgKMK-!i7?%>c~rzd zJ2$?S#in^+>L+x^ZMMqF72YwI6|m*(3_11tF%$PrXgl9f3Y53y&;LO{deqW$!9uILU%1X;8x5M2Op>r2S^Q{F zU${mZzc=xOeg;Cq*oaO8GOt+yqj2&(I;;FkD7lrXSQV+Fa~7`^h%lYB8}oW6D9kNK7s?W{p$x=Kp44OomfgwKkVLHZm?>Icv zF4uWOZc6a}-W#sJP|+Id^@lW04Z}|iY(52f9XCuB=3}lNuj4ii<^~{FNWW#(?LEEq z^&)7A9XCjm_vQ!xpc-QYVs8c?tyF4!H8X!Y!qi}TJAyGAyg~S|gTaS(LlSB)m3wG& z7(|1|zD%e)L_47;JDx&H=wS@6!M8x0Zk4KE^7%(LdPT*5mozX+Iu-rSf5iaoM6Z(3 z>>qLCHrq2$pLnMF{vAg5K_|w&(N_~M%6xW2rX1eONh3*v>apI(t~E8k0#>#Ufi%61 z*ruzJK0yI_a@}4Ow8lrwt)zEfXpT zn!N+=v`Xe5Ej0G2RneHgZ)n$huz9h4&UqZ>d2!?$nwrH1cJVfx zTN?H_DNSUTIR@`u8)Okdb;@PG0bFgab+VZ%tCPm2;b_T+j|5wl!iS5-+L?VuZMI6k zT-uhHFzhzYRr3ifOm95RIP#F^1k1|nJvBz<-=96@FKZahlG=SQ>VFI<$rb z`@_R8`QyUXw-2zE*~Aku6T_l5vvtHSf~c+EVu33$2qyLqvKtQtR&GKgs)x>L3!RK3 zXZtfC#Bi=^(~>`?^RYjaj67$o*M=A!Fae`Qz*} z?jYQfmchY5M=`RpN@T*Y0V4l9+bYhbyh|Nf0D=836#A)_7<9G4%|ontN`t&%)jz1V zLy2*>3AS0Kqc<9obXIt&JPlnZN zwiSTPM5O?S5@yQDCwdFTTqeFR$}!kyE-f$^ufpkJa^#_nkc(m7#;4othyA6J=)L>z zkUK4Uk7mlg-YzLGwga_2Pwf)GVZZ#mNMi*gRp=^|N7UybQ}NRKSy4 zvzzjpD;-|`n3ds!TEjc|aoiQJ;$WqB%pQ%kJKw^0WCL6T{LFot4hWsw<6m5Dx^;T8 zPR=NecZj)HHyXSnfE%m7RPt)gChu%CCFQR--S@7+7v^T{j)XHd&_PU26mUI=R#;cTnvf=doj1 zjo8TC-KAv*@q^JF#=r%uZ7#@%jt`-e^9;;!k;Vn?OC);EY!y$0Fln)Je2LhGyUCufx-gNXg1uaa#Wxwj3e%Z_8N~1Vl>l+jg z?DrCL1x&Tvm3c<|&b^5se6*5UMtS3?Jk;j{Q=s3|pxOy<#&7$5jNg7TdcS5o0)G+P z9kOrPTYlPzj-}Ve15ROGT+lD)7C^^h=<4QNbon^Ddb3#)1fy+1R~-inHZg5|l?PR4 zDa0D{R=4+MaG|FXcan}*%isrUrttj-G#=htnUq&;XE5?JkRSt-e1afM`zd4XC^4h0 z^ZRdJS5KuZzlm^o-|V>%!m+&rWK;uPjT$(4`31NkB>l@}6ZO+hyhl_@{kQ@Ty|Q;Z z*G?D8w`So(?|G!LqIFttT76Hv$+zScyi5ml=My=G%Btr-WK_OlmpgkN9zZ@C0A46e zi;>WR!SK4L!5Ha70LdTf2QYit*L_tp2%yRI-E}*L8&ej|s)(blT*PZ28{4g{4xON# z$&2U^+3EV4IKxv?abfa z9)3-32r|A%R5Se6p82Kvf|@+(^0}BV>WB;odlQ7v4a|LXJYbzjU5Dmpl2)m zp=w~a3vA)C6jL`1w{ytx)p_@iR~n^`C>?%hO-yPdf%AsztSLbb$jUjaP<{!inbL&? zVa5aWjJ}wt`%D?O$d8OnvHmLMqD0SU+-B5zI{?ke5vO!$UwnP+eSBTOMDqyzbKPQS zf8f+Hgfk=X^V_d=u|dSP0L}1slNzQZ812~fAsLvm+a%-1=h|^jD*3Got&(9_0Ima? z0|1}pw;IoY5ru@qQ2DW0yDLuhxzQyN>|$otF@BTAJX)z$wZX;abSsR#8mZ82J0(jo zhHgSQ(0y*HnV<-;-(p4s(PifBmb1WI3fW`rOn2R+uZ?@&vIo;z{(0RF{ssNx{>aLb zgVC&jk~0H`-{WVvGP%=JtC2osk7CX()tSNnXY2Q3*8mI z0Cc%44cE(+=D8rrSkYyTF8lUE$+4*>U;Z>Pc_>Y%lIYKh?9w*W$*(Ln0HRvoq9P7$ zq(>F0GE6ufs9eH$1LM-QwWoe2em2m7jt9m;`;Y6^20j_;y$NgS<1-vO9+W``N2tWt zsnbnNQUe-EAM&bf9NgEi=ywP5XQ<#b9h}MM;ldR2T~sOb*z?G?X}8&Kf9IV)91EU+ zPtG3VBe}M!_MHw6d6<4Ce+a}bZCd<-AHomz(}R9}SvNlP{ZeNl<~NTm_Zyh|wU|_A zKY_|@^&gzcZx|R9G+B4ATR?7YOZY==f(IC~DKSvJ(@EoQ!AC0?qem#0`McgtZoQuK z&r^FRrBRh9VA3>2Tbo{L0X*7pFt|LfwFzkw1NC7gH-_<=lzesU&NyWNeK!^N>A4}0 zF5i|*_J_L_)hno=`?@EIrocAEe6@lszD=W^gIz-9Kvlz%p{bBC`neg4PiAPssvymR zTJ9|(Werv6WrA#uSK)hIu%Looc%}pFZpZbxZsvgMV8rALGP$$4R*zK4lGo0;W_=&A zh zMZW8g`CWbS+pS>%J)daSU?DgWfVt9gIvL(OU49k)z=SNK{IrbGnurxC*kAhlJZ)T=2N>5wo z39AQ~eqou>fc7~&qr=KbSgR6 zj@Xw>+w`k;RDgPmu;p|fpTdE7REzBV$?|y4B+7aRe}AWk{ov7|g~5a1W*tVj*zcb- zd4FdU!K(KSHvOc2k`7R<_>sf~WfTvb&1~#MnWUcSa_dOKs_&j^-$?CF7Dy=vl8t6iP#ehsGx-BadQ=j&`2+Su z!+MF|PE*Lren@-0*SJ)%x<6VsvTRsnsp-$tYdrzm=6)~&Q2L?*{5jKH`|YgGW>3G z>U91r|L8t>a&|jIW*})IO-bS}gDx)VL4n7i-TW1}*CcW#g@mc6Uim|oLQPiWab*lNfuD(THIdZ` z{P7Pn3M%Z#0ygHqA0QYD{V%f{ou-UZq2$w{5fzXFgv}ZOR$YjvZ5Flm)bll~HQu_u zhgL5J4yFNFtgUmQ+_4;BJsKCdC+SQ+I1@nTHm3M}2Grpu=`Owwpd}R$KClU~*Vfnl zs^+!iS2_&{U~zb;^+``0^@ZyTuJb1ZyzMoFc=Q?zhGMHwQd@maTn1|2xAulD=p|v* zM?w2STk^3Z&3AQxY@mlyVl9Ld+6Go^7=5-TGwn%2xLb61n}+X`PCiPvej=8t$(Nf# zjA-wmH++U_fe;na;gy@U?NDBrKf6ukcUUV9>hE(MU^#oca+d!zI z;cFT;yDQg}n7*Sj&{$Oge(rzkZrPu<77@OYm#2AF+kRJw5}#l`)Ob_?wRwG+gKI}s zLrX=YwdygTrdG>xF;X(5 ztFXt0=ZXLiJbMR-!Byn_P%*+@yLlZxpjIuD(#^+LhP`6NZcyL6#-tP0eCHGV=d~fJ zaE_v{T2{`PF%KvbT7gH|n3J0bq2Xt{Hr|15f=MVk(z=JfMWvB9na%<~ii&vm?g_Qs zvIz@}^V=dZF$eRBLnDSy?#famH2!(`O!dZXCxAxxU)G--4|1M9Pe%>E7?qSA)Ghc4a zeznbl*VOjutLwihPREl2fW`70$H$w4v)2X4^1kG(^r^)$N5GZUQ|%a_mjY6Gm0x!* zyr%|y*rv(20NIxlbPN8)r8Y%?5)wg3;<+8iR@O*pb#>*%ts8YA#Bu$4ckgul)br0s z7(EhISU?-*igEBNwBDgtqak%cq-L*SC9?r7O3m{`lCbJ^>O|%nbw8;sWz%F!sO+g< z@V>1zy2PVP(ii0N9rX$~89_~J(-2JYuOG|P3k$pAduApj5qDO}Z5kN9h47z0>VIf9 zf*^mpZS~1<_PumJ)h$&n9+ACpOv+^%EvbE$a3p_%ymiC$c2{C(yIa7XL@H+zo1Qmw zD_p?21$yd%mON^{f8r5uxDegc((ZP3YWz+Y6=2Vt%Rq%CdXf~sr}&w9$v&sUCCg5? zxx)#;1~a+eTf0qXd3CE}mH6PfvIZhs{@T*uZX!=;W4m z;Re1Tx%J@r6lz-BEkE2xxSu=q!nv#u<@tH6*~h^x@d_im&PVtB>LIk-oVdFKbg16C zoxKqv_mZSC-}36-l0qA(fmm5%_pc8d_`f0{n0+2NOGQC&c+eM*(1TLE_HMW4!6y~x}zel z;-A;e??UtIPh)6g-p=`7>B=_)P7@)3`-~5}@xIAujCwUP@wSibf;R%*GY{u2$(%AfQiF=Y2}3rB2Kgx<3>m;XUH0QtNbfKZE*)v7j@^ z!s_b6Wb4E+9${JtFz{Hz0Y>qv5dTi=)8uF<o2|EoFdpX$ zx48s>W0%lw5SWwrL-l?ER<$2QpWQgP1sB{aaOqE-L19}x_MRkBJ6~Fij#1pt7h;f-Bm;2S9ie-=mzg>DhC^Kz9)9nBe*TqY7hgHS(L?>$hIK&~ebPFQ0-C+` zvla2^=-U3aOKE#HOoAID)<~$oPaFAc^F7a%P`^?l_Sq;X5EFm1~1=HA*mBK+EL8vkrDA0PFz0IIzv9 zwhVHjzXpQ7znRj0!s*=GlZoByi^O;hh?wZ_%ic`sHnz#W+t43TM+0Oaaw`nUEKxt5 z0TR2<&)?BNj-EcR(EjD`96gCq8#eC{R%*VZ66$~o=*rTQe+&ms7mzXRGR* zSjZC7t@#y}R_-`SC9=^P&OJU-C6A4*mLDvmWR z4~t0Ut@DJzKf1tdTE8+xo>1K};a1?TtrhV#GJ?FE>ZqEr9H=N@=D7B-$o3=kYSML& zBE#J5h#}&6pHqDzm;A*}L&%xvlLjZkz7GLVV>9L*hOFI6tV%pK?apKO9KxJwZiP)s z;HJ^dxXBANLy<~AOpR)vBXIJk@ldC!W^l^rU%`nyFK6<<8|9B8M zPZejBfo9!T);NAdayf+VJQ*wOd}I={58eUGlP`8tu0Sj78c&9HQug_ERHAYC7_&uN zSjMZRuTzH8VJSPQ=lQ!Kw=Pz-GKa0X*Bd0tnKS0rG}xEHHMZOh_mo6A&X(l(C9_M5 zro)Ma<%ZiQ7ahNy=e)C{gP}sj7M3iagdwD(sI)0}Ll8;X@R0sY9!js(>&+M_H&#vt zpg0W$m}2V3fz|SD`Qq-=1oom?+h+s3+ezo|VroGJfHNLt@aXhz_kd|mRFsI0nE6$p zVITPvI>M*~6ow9rBCmm%)hys~>!Vphw)3((6GTDHz&c^%mc`c-aR>0{l=CPImev+8 zO%Y+l`%c0&_osN;B8$JiT9`^YntF;mEDZ%M+S_K$d793VzbWWyn_SNV?*>rB-#mvA zxnj!kS~t>U-V3c!TM`SblTV%0mG&7(F(_;J`*HxHp_qCb`wW0ttuU%+zV@Sa#;-ft zOI00a;mjxv5);O~2B)lYaQmn>bf4g!kl357m%2YXOG&WI`aa;0fiXyGz9IRf^CVo| z72ocVit*nFOiHrM%HEZ`e=x%sIDdcEVa9_nk@I2(q&NygCB95cbZSubCSO8X+b+DH zk5G=lC^0pk2p+F9w8{uIF*fzAvQVn_vtz8c5QZlwLwlA}4uiCR(bk9Ite9P#3JLw5 z^v|lpP|27S#~k=zn;Nd+@C9meQ*L2okA7@YSwql`qo=`0!2Kqd3y&S*WVADxI{?d> z$W3EP^@UKpe5Tl}VhAV!5_|aefQ_bSZ`3^ zgHY2}9c{8c^9}lnvx1!__v_R@dd+4WVqw`;Z#bGwLqkIY0zXpI8V%WQqSrgT9N#9h%0oMd_I=>DUPY$5lh6_dx!R{!9~h?gHbwC=*6q?Ry7>j5wGj_+4HG z(jOphYrQg8bIdoG+2chnmWQQs{2)e&IryEpi|a>;$2NFGDVBH@oo=!7Vw45(Zi+62 zYkhExnx7=ciT;MET-a9Jz>0G9;O;TPf&>YA)V+GW()=o+Fm5)3TLFK0%*cuhwvv-l zNh3!_OM`QK*?Q+ONoCF4u-g$b|Ih~-RCceNsiAu?a0fR2kc6bgImK>=zGE$O>WYip z8D!8wxfN?pw2s*ZbA1CTCHS2zn-0sMx9ohcT1?W*1+xj9!`NqbNo;YbeCDGm8PRWX z&9{FxH*~iMzh$AkNd|5sgrd^7yYEWyUUQZfvLT?!5Rxf$L-XtmKKNFS4(>W3vpK3i z?OuNFu8MYFuh_VcINcqd{lKlz#jD^anAiWQe)x1chY)IjfKQ*a9GtcE2X8mWuHpr+ znqFz1`n3BHcILHPDFvb;NlqYEQGX9rat=lrFa*AcOpd#YTBS|17A^N#!bI<){*qE+ zd-12a$!zS}v;$1jqyh?~cWxwpBZO`pQfi;{I$3ljX1|T?eNFt=(y7N0u`xM|FTi&P zz0?ndkSL493HbpA)Auf$u(T(>?GV1ZqsxnX;G1WVmbM=i{Z~!cOYNXjvp?tj1{gKUQ%QFlc2uODMmg!@L3<#$LUjoY(Vp^a?lUpRE zu;$+5s}ybt1D|XRm26?#*gGygLm?bZfk(cw=vG{;^iG3veVZiFdYtju{ue@`{zr~b zZda&*1sp>i@F=30$8(Z9IIShvr;S^oe>nKGuSMes{}qmtX5_!IUem?*a!B5_9^|t< z^=Z+;WU+>`$y{_Wec10sRFHAc{;&%nxVMG#m{naQj@^jVsivlN8=FOs3iK;45$@hH z6^iHl#|d`$mNr-->iSWpMA=+A1hsBEq-+Uy1Cv}IneYC7mXH=yg^3_Wqh&%R+^cxc zkOJt+$Ty*({U-Mp2YkeK`}evsu)0lY_1Y-Q5oCa1PvXmLr%8pVB^Ny@I9EK zJ#K{@QEoH?O1+;$FWz%;2w zO~{JNrZRV7UOs7Ux3Fgl9JoeX6VuYR{?;i1xOhjW|A2uW`mo#ZCq8-`6cd@8aIMPm zh}AO?7at%?R>s#WgKj;Fg(U@*d49@-$;h_`?G1wsx#9sQ1aNQzI}=Gh@cbY~@c1o~ zpFWVLhNaGhA=6N=zL2o*UAO!`TD;zL z^0;LMJxSxipLGIk)B7jm?w`VNbg$~91$K@;eJ1p?>Y}fk?!+rjJlnK0!%tIdo6YKG zjD0dR)j#r~c%!0@7IwieiYbqfTH^5%YeIKJbk9xNutX&iMZ-yN6^&UE4%@EC7NhIu z#T+iM;{U^it(Hqj1r&3jrQzT{1;9~z)H%F-9b#^;65fqm=Xd&4WV$YQiARa#vIg&k zYez$MVew`HL#r9{&63kzs$ z_|x1=^4$c=L;&QDxD*xH!9ErOu^`C1a6{$(?6lWO)B!Taa9)NJeOXuk<7q8kPF=mi z($WF262+>D+pekM+AS3Tnmo(^?(TcthIxt}97-hiw;5jediubIZBm1);45jXYBg4z z8>90cr7+R700;yP1@uC%t#StnRWyPfm z1|7~8Db(68UvKM$hFKu%7!F>BDI4U+6`Myrsdl90roX8bMw*nxRzj=YMH`(``SP35 z-D#mVRYuYVj&6}Qd(MLf-&kEX0sK<>w;muh+$g0$wP;dS5z~^&1hLqII)* z>RFZiUO9NuTk(wG<|ye@dH^}aSNc~}=Zi~qPx8&@MW$LFnvW7JHVue$6?9Cu-*_)x z#du@B8xNM>0vZR-uawtdOe zUH$7esdEQEO?T)7OqPa`kB3{unoY^y^O)pUAJs8P@+F$JxqlwcV~4He60env>kVJSC%_1U1~XV*cwJV_xzY2hu%O$-7hKrAu(u%zjlQ zbi_@BZvYU}T`F;09)fmC%Euw=uf}YrFrm*^O8-oUObby48pI>0I7lI>r2e zgMond}l#Zf~`>ueZTIzGx$?jt)zxFN0Iia@4xQ*l{MQ}IWoRG3c za7P;s?GT6anQ5jVJQME5_$QnOu%e_kgQ<)b{9;h+WVFoXHyRlE6`)gW7>BmY-_RfBksV6+UUYopXAyaQ-C|*G zWuZqgE?pvbI$_OeI17gHfk6=NF+vJMBCV$=RxJcm86cdQ5b$I0MKmHjpn2WnS)NJA z2VK3eX3<+j@{}vjcNwyK^phVfq=GHGIM68ZOC;$2 zd6D35GqM94M#Oax=!;m(P|$ESo@}0E^2vUdT&SxPMx9|rVjoMLxX7>a%p);dDN{fM zsFz}n;p&i5d7^T9>)q9fhN+m7aECJom2d42%Gu8WQuqZxy3E1GHteAN7=Idj^V%1$ zGKu|Hp_hrP6Rm-W>~E=}=2D}~-+^&d31NxF5A{isNYbUJhg;jGO`pO_2h$VU9{!D! zHnA5t$s!T~Xu{Z|Crp1|z7k(A0srnY9cr;JONm}tf|qqxr%_vilYUb4Fv)#-S^w=p zzl7&cPX7IdocG^xRzjxV9(O%+RVo#z-y#jd55D%zfMwxW|}BK{?ROE(5%f57t4Mk zop>4bZo&6Q_i`y;y?WO#1Lb&zTnS(7t0T--N@z>lUzVI36)J&Su0mz~Wm7GPLB1=` zl|#hUcQN#-BGmj3$hW~B&~!`<&olBQS%<6oW(HC>&la|U)6KN6^0tB z#l=^My8VLO3arkC3{g+(gDWbU{e4Y>oUgSf$d|GCzAPiNz$&*p6k*oA3F zzdmK>0Bo{b{u?fO=tpAg~#+#))gV z-FL&zD8$@+_r2I6{I7>a+{z?h-P+8}oGR(obk<+m$HVtt0>x_n4XHi(s2uMAIn%;a$ZcvPgS5J1FW+ODS9ofT8?8IU!QH9@rMXd4Cqo=J_g3v?q42vn;Tmy)iK z0LPG+iV;b1+5RA_Djq2Kl!iF>!Txdb-|I>gPzZIW;+2Lf(FiKw?UJ97><_c@s_IJi z>4gC>*K&$g^2_7%GG!be&cQmZRv?MUGU*3oMHFe>t~U3q6(ay6drZSVf48YT>Ef+p zahP3T;PJ?4tG(1AwUyQ#CjfcuKl|? zTFUWf4o$wDK(HdA?E~!%Akfh&vMNtT6FdMUwl*!PAS=h4Pp=^Z<|-^%J)(iK09Z<3 z&a3q=KvYVaZWw0`0qJ4DO`Q94q=bW#Y=Y{VKP-3f_=vXD>dcHuy=( z3+;%qFzlm(OKL15?{gp3bcsVzy2<&yan8oIxe&@-!d zRNaFv(+ZfFG#fh<66%W*3e}J$Rss>=d6)A-rq?bqTDt(%2fEe>{vDJI-s?&9dwKH2 zw>|KXjK?ZkfiIsMg(>!T-_k^&00%7r0rr2qOT>VJcV4`da|!p;`_iVdBzA+q`n-sG zCjl5}aZk#NSHh|gxTH_wXvP}3#jwcf}^WS@f}q z`4BC%|7e}WNLTNR@>WG3BfKrti!eD_`U>4bt-iXaKX4Zo0BS@pm){EkTl?8NU}&IY z%fZH44BRY3@JL>rl|e|km{oMVUa))rDyhmwMY~)>Kb9=XFimySjio;+cTP^Ke{KD? zlkCOwH-Uq>;#!v59*4HSs$V26MahFTQnfZ|niqg}izn7F!96K+*s!kZbT=@OZ5iM@0dxaE@LsjI2ZS}e zViN;w%V%zXMj?lqmY0sCUwH{8R2|5{4U;2gEg<~(_Rl}@01%0H%^{)x3po&9-d+#x zd!wReRhztxX zhI}CBl4>kj(~;~Z|2MK>8g-c*2neqaNXO^|1+`cYXO)3XgZ0(ru$EsiRkeL5UmhlD z!pP4{MJe)9;qfL?k0PEY8c}odT4%Kc|{j@ zGfNb3q&Z!95qLN~Xb4dZY%3#=C}R@YP${p6Xy-l0UjV;QNv8T$W;&1kYiql3b3{Y+$X47Pj*Z5xuT=%9(mmpV9uf8Zu+LW34Jz?G965JZ zc1^?JU*#2+A_E4bqZ3sulr>!Cff<>-@a;tPp0H#uv;@q8OsZ`^;`adR?>lDik^8fb z7WCOz6nu7k;04tJ=qv~~jD1WNA=Ij=na0rrH8E>Yf{=U$rey@cB0#MmbJ4b|J#)m; ztR5?bC@3I>n%ofA=|&oIR&`I`JGCe2U3~&|RyQ9su>%YI{zc0)Ukmz))^*(X2^E!4xYyNV zbXo7{di)PT+NCOKId9=TI#RfUmdM;^D!tDLQDGoXu)IW@WAy!rU4wEwN2R*3%{zBg zJ&v&s=1kT1wWJ*doTFoJE}UKeH_om9=35%7>`!BE-xa?UVtyW{zxPnMi~KH$UD?0> z7WRG2xa)EKk9!F4mHof+jq%U{B5&g*04pDdY%>LRTe<(iMh+FbQoUBXJ%C2~v~_j1 zg6F9-oV2yoJ=>J1|HJc^KYf$`l^J~&SC+4${MkuWvY>JC@v;A4maL&r+eu|s;C}C8 zoMc6#qLr2IC`qoO8dnZs5-)L_@Xg@7I%Kn^p2_CwI*Wz&kxRQH`DR-BSzmzs80Ai) zZ%igAr_~=fGOq!ZKlXRHZE`0!^hIr#g_gYashu!pJ1z|&;{FDKkkO2-?av;|{r_p=+cQ9SKE6F}REoQ8~y?Mu?wSVn9cc#m2boI^f+;s2F)QvoQ=w}Ns9g>*zEzdK2IkR`K8&k~Lu;i#y_Ur2`D-XIl zo2Y;|(W+Z?q%BZ;TBbE#}US_p@DRYJSx zMIU@rv@)k>wQ1O3U;*qTv)#X_8-A6BiV6vXONfT&BE-Cd>*BG|DM8p<;2%W)Hr*m^ zR||cR3p;w))bu;eXL#I>-X5cAn7QCzVZdTkB3e=g9N*+NL3G1 z)vD`#8Kv8deeVzrK!@+z#Ltla(?P7|xQ-!6oi&47IA@s2Nmn~UMKB+IV}O{i4w2wH zz5{(08{^UbrHnOhg_s|UqeAKoy@p}?Ngo6A@+(l%c|86%qo`?r4hx59UI=_fIZc-8 zqw}2Cb)oBmu325t^bUZ)n)jt+AnkYlDat{cgmk{TU5^NHQ!}BYjboUN`{y{nJkE62bhqeuaPiFdCuDnn$tX#3{AeKweZGj2 z%F(o#?)oVK%6=^Fjn^O%nY)vi4!QiN-vEVVm6i#%*sWsqBFk^~6-hCm>PeghRxBzy z5J-QaBL6NiJMiE9?w>a~3Y$Ouz8ohVzFv8*{)v)bn4}h@jA7lFhyn?389`U)B9&eH`QVS50}*3de!a_|QBvVs zb5Wz?- zLp|Xe$d8TVjQ$%QsK-%C8woA@YT`L#pQK|K8^6yg@1A~;>0XdoLYCBhy*rGG`i}pP)w|W@Ciopuy8Bn)^1?vz8QUTN+p%AOtXopdA~B? zSL|Xwn8m$z>914QMZnozI^34&5+0s()A`ArcE85o60pa^Id^5OXyoqK5k6Vx+s#NN zY=vNJ*Es3~;VBlarW`l2Q<^*2Z`)l1SS@=)gsHx3Y)mdAx8y_OD4JKUF5@rx;47)- z-pWFt?}#zN;1dpR=e858?^qAtwjVs&w<>W=GyyFpB+)7zLGOhWMlE9eWRRGuoE5LE z@_ly?)ja(W)e!S2rf1Y+23H8WCfxxvP0aD2T$DT3L{O)hdbLZE=5^QX)U>D|`CX*Q zf*WqqlnwAp$c!T*vd(Px={~tOkbsyaAU;Oei-vcZhAp=u^QZuXoco9jD2&@KdC$cx z1i`5pW=_0-mWkn07=lKoh{Pk^XwF(Yw;dkwR67S4R2~90HBsGbE__38mw@2M!*>we z24+m{(eTR+fH${1tA~Th0Byh17_-MG2|D(Cc=V07@rA z*!X6<1Z~4$?F4epen9k+>>0wttgNnb?4)jFUkxxs7d;(J`8;rTLaZ}tJJy7{h&yzF z_zbJh9NZ6pdzVg2=Q?xgPuKL*ETFht&M`~ZTuci%hLYN9UAUM6z`n-{QuAT@#itf|2?gL$C;GfsJ6z-$48c@DK3nn9-H|yFa9LF$XqFy zg?JKQ?KS9ZNoi!J(ld{X2^c|e*zU|R>LddN>@&|Qk^$ObY2n4}rL_SjyQW_~z)L3< zOyxsrgVU|MBm)vvtYTdB1AiJph>3fbY@kw>AqeyZ5DiQx5S!V!g`|q><1uh;Ci1kkRe0M;IfT(^V;09R$*s~-BOj(k|to< z@bUinIvJYPtUQtohNuS1!DtCnw0qsrWx6JQj`y^;|9pU7fm3a>Hxp~u`GUF>rcP}6Fet#O#zUG(zCVAG zoj(Q|kI=AlAEqE0A_n@NSFYWKymEUGC_jFFIwZ33$-y^D5TFxxbNm;XCB-v48A`2TtEJlYS;!vCCK|F0p;$2GhEFaaEX zj2A1o!xJ(tN%Q#Gj|(qW%Fd59SAcmB{MLUlPvyUs&GLUf^`|Pue{)nrYAt>hzO*FD zef2kU#8!Hl7?F$B;y-uT0xP1L+3kw=*a^?gzi*D2*!oM-c6i!z%5?-VqfSrfLNdib zQGZ+MA+_wz?P_WAT^Fi0=bjHL2{W!ii1~&86c7{Ge$Vvn)4KXa<)w3V5ARO$>F20| z|M+>ko>}HPJt&&_(0icT{6Cu}kSfRpE-FP>dPSyAX5+2jnqmCT5lZaGCi5j)Iwt#5-@ifKEPAqIj7<4}_)y_Jr-ipMIoG0s?gK{Rd zs`8}f&{peLadBzi@flq~ZLuod#E?n4ydIQEqFeViW=Xq;*^p1eFt3u>d-5#EfrO@n z&%pCk04R>~0^f8kTf2*V+K|^m;zQQuE2&ykvZSxyp z%x(Dl_gO?;=A^Fi9MY;+bEkw_=zmfkh!Ro=7BCG<`?f&Xl^tK5lx-~mI1^i!HO4r& ztINCa0awhrqL{wbsV?YtBN(y;r5YRqyaJ`g)WM(TRn`U$=H#QCVS7%nz#*|J7WkNy zM9%jWAwZv47u#3%qZ0~QY%~$9FNSXcRz?$xQr9;33?Nx6}J-#3?V4dBB9 z0Rn=u$8#YqPZ9(k3{6#Zb!K&c2nvEQR0`#wz)405ea4z_T1F5RX$A?YlXTre%AH9? zo@7oin@4K8WWQD+fuArc#cxo=ZOi^aJ|S?`8t(`P#KUr_#|Jpx=icx7Wb=^quk2L6 z(l(o&Xj5M^2jcYwF`M>H)`3)cT(a=i;pC^x?)i824kM1TEJi`DX10*Lz9F+@k9=&u z0+4(+thJ4ZmUtG+^6s>->dbqfaXBkGa9Dk#zBuDdiUg@=5j$R|4)y!6+u9g+)97b+ zVsgq_=AD;Y(m&^dXZl}l^#k&(EBioEL>J3%$N@Ma9cPuy{-ag^MO zK?In|hr#L)>nF3Mbj64jfCbwtONoc%q-;M%Pn@-QfDg0ef1G+apSB_u7I7w4r_I4V!5n}Fy_zyR4`pSf`jXjf2*6Aul2>GrTZ?A%7Q|N8 z@$3BQnYXxglM!sg%y*S0Esik5SdTY`*G{&gDe?y)C;i0G@aM4BBQQn?e*N#KXP3H}0b$$4;b^{Ur>CvkukN7U zwZ3bG_e!oWdaNPhJX9NkM7MU;`%yBNxEt#)1)#Wg_JPW(PSEb(qKL@r~&S}qWY2na1; zF}YR71qAUaGkLfFS8Z1tm4w-bGgG59&8cB%VIE8KYxxl!0lnKs)>LWf85gQcLN z1`9cV}Em?V3i{(3x5qums# zmIU{zg$(I62BAfW!f9A8cv##Um9uBP*%kCur{!0ZrAdX_TJps-%anAxt(!gXnfHdT zYZX?xmfU;)CH}?Gi53Y=Uv4!r#L=}OkY|H+<%=Q~8XdHpKhTWG&!X|jGwWM@e(Vqu zj|+B-mbvo-&WF@V+qb>j)1z3*F>4>a2y5PZL3mQkCmIWud7ODk^r9w0wpL`!`j%k1 zgkHLP*oi4&cg1!+PjsdrD=j{u$65nHebH0FzqI^Nos%cFe}~Wz+I`MLpLnLyBAf^k zGvegzYI~YZ-n92lUmUX`FzR)vm}3|@63%J@CLMA!zt&j?7H&H!$>xXapiKcc;oJ^e z>pkGVuRz-}k)m`fV`)m72c9IacErU|!!l&$6{n?K1_K5pYI9fSsPENI?qvLA>IN4< z5?4$&P8W>2A`4Ap1F;~5cs^Bnp%SdE|LY^|$LFt_`Lq&m-q9yGgx^+%iz~&pOlC`t zO*k)wG{N!qvuCC(M^?r(96|pazM=mnA}+I-lE_!zRxawotZJjT{7_{G4QL#CazCa- zdQ>sZUkKg{>120|ZPL@;&L7|#&XELtOWyDHfWoc(Kc)4gBFXcDK}-g%Zkk)0or9{H z$7OzP(rqff_Mk15KmSJ2Chu6~X#>9I%)wHa-D!V@=rEJX{`G|y_IjGT$72?*5;qis z{{j)IjrV!wg)Izex6~P@rVfgnZq}vEtxk5dV3-BuRz$%q#-<+uja`$wpRsymc+BF~ z3YWN}+cvk{Q(MrZ#Swe@?mlpc%MT}7(tFJ=1tJ%1?}+o~Pn?=~{Bjs32CIq9xmi_O z?@w>vt$%f7*X_5KXGec;SuvDhOz_|(wO+FzArEZbdx(_doY+R&!)p#yitih=$-5hK zg+vv9k&N&(1r(>R4DafdEtsThUE0t}TO0WU+GoOV*uB5WalQ`){Lv&Gyaudq>{*A3tZFuVM|!blTt`C1b$m}xNOM{NDDtS#jl1UQBpG~ zKLx0^Q%8lUPgFH-i0fBf04K7pv-?K8&p|)zAb%Irxmg`1n{wD-3Rf_Qb!hU35il-79`J}u=D4^N76I1^z)=$*gX1i%t7!Pi*dE4hW~1kRzyJbuIUv~Wp^)dVD6FTm+t^g-VpBl z8EAtnqa6A|*d^4B^T5uTI?;1IXJf!eaQ7#; z`W!OY;JA*#W%V%903yZPA(H)%9lO0IgoEmQG#j<-bCI1wthGO$0^pEHE>;(b&)bS! zl`&$@)713M872FJCq>quv0rXP{SST(!h^Zs-2V@N|0xm;(jzkoKz1820sY&ePI(y~ z28yzea_qmT3T3atU|^6(M1rW#t^R5jwI3J;uH1j4)|OJI7rd~iKkf}EOJY8|?{U^H mVy)Y0yNG8I&v*oaY3nbSsN9M5=|XVhs(n$hk*yKQ%s&9ElY|cd diff --git a/examples/example.yml b/examples/example.yml deleted file mode 100644 index 254902c..0000000 --- a/examples/example.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Title: Environment Setup Example -# Author: Brett Tasker -# -# Description: This configuration is an example of how you can use this image -# -version: '3' -services: - web: - image: brettt89/silverstripe-web - working_dir: /var/www - volumes: - - .:/var/www/html - - database: - image: mysql - volumes: - - db-data:/var/lib/mysql - restart: always - environment: - - MYSQL_ALLOW_EMPTY_PASSWORD=true - -volumes: - db-data: diff --git a/examples/multi-environment.example.yml b/examples/multi-environment.example.yml deleted file mode 100644 index 9c8698d..0000000 --- a/examples/multi-environment.example.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Title: Multi Environment Setup Example -# Author: Brett Tasker -# -# Description: This configuration is an example of how you can use this configuration to run multiple websites at the same time -# -# Note: This configuration requires a network named `my-network` to be pre-setup and nginx-proxy to be runnin on that network -# prior to `running composer up -d` -# -version: '3' -services: - web: - image: brettt89/silverstripe-web - working_dir: /var/www - volumes: - - .:/var/www/html - environment: - - VIRTUAL_HOST=local.dev - - database: - image: mysql - volumes: - - db-data:/var/lib/mysql - restart: always - environment: - - MYSQL_ALLOW_EMPTY_PASSWORD=true - -volumes: - db-data: - -networks: - default: - external: - name: my-network diff --git a/examples/nginx-proxy.example.yml b/examples/nginx-proxy.example.yml deleted file mode 100644 index bb498d6..0000000 --- a/examples/nginx-proxy.example.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Title: Nginx-proxy Environment Setup Example -# Author: Brett Tasker -# -# Description: This configuration is an example of how you can use this configuration to run environment under nginx-proxy -# -version: '3' -services: - nginx-proxy: - image: jwilder/nginx-proxy - ports: - - "80:80" - volumes: - - /var/run/docker.sock:/tmp/docker.sock:ro - - web: - image: brettt89/silverstripe-web - working_dir: /var/www - volumes: - - .:/var/www/html - environment: - - VIRTUAL_HOST=local.dev - - database: - image: mysql - volumes: - - db-data:/var/lib/mysql - restart: always - environment: - - MYSQL_ALLOW_EMPTY_PASSWORD=true - -volumes: - db-data: diff --git a/src/5.6/apache/jessie/Dockerfile b/src/5.6/apache/jessie/Dockerfile deleted file mode 100755 index 496f900..0000000 --- a/src/5.6/apache/jessie/Dockerfile +++ /dev/null @@ -1,72 +0,0 @@ -FROM php:5.6-apache-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/5.6/apache/stretch/Dockerfile b/src/5.6/apache/stretch/Dockerfile deleted file mode 100755 index a00c440..0000000 --- a/src/5.6/apache/stretch/Dockerfile +++ /dev/null @@ -1,72 +0,0 @@ -FROM php:5.6-apache-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/5.6/cli/jessie/Dockerfile b/src/5.6/cli/jessie/Dockerfile deleted file mode 100755 index b6fe390..0000000 --- a/src/5.6/cli/jessie/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM php:5.6-cli-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/5.6/cli/stretch/Dockerfile b/src/5.6/cli/stretch/Dockerfile deleted file mode 100755 index 37c3e82..0000000 --- a/src/5.6/cli/stretch/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM php:5.6-cli-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/5.6/fpm/jessie/Dockerfile b/src/5.6/fpm/jessie/Dockerfile deleted file mode 100755 index 1016767..0000000 --- a/src/5.6/fpm/jessie/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM php:5.6-fpm-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/5.6/fpm/stretch/Dockerfile b/src/5.6/fpm/stretch/Dockerfile deleted file mode 100755 index 2b1d7ab..0000000 --- a/src/5.6/fpm/stretch/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM php:5.6-fpm-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini diff --git a/src/5.6/platform/Dockerfile b/src/5.6/platform/Dockerfile deleted file mode 100644 index 4bb341a..0000000 --- a/src/5.6/platform/Dockerfile +++ /dev/null @@ -1,71 +0,0 @@ -FROM php:5.6-apache-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysql --with-mysql=mysqlnd && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysql \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.1/apache/buster/Dockerfile b/src/7.1/apache/buster/Dockerfile deleted file mode 100755 index 573811d..0000000 --- a/src/7.1/apache/buster/Dockerfile +++ /dev/null @@ -1,69 +0,0 @@ -FROM php:7.1-apache-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.1/apache/jessie/Dockerfile b/src/7.1/apache/jessie/Dockerfile deleted file mode 100755 index 6b57154..0000000 --- a/src/7.1/apache/jessie/Dockerfile +++ /dev/null @@ -1,69 +0,0 @@ -FROM php:7.1-apache-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.1/apache/stretch/Dockerfile b/src/7.1/apache/stretch/Dockerfile deleted file mode 100755 index 951e17b..0000000 --- a/src/7.1/apache/stretch/Dockerfile +++ /dev/null @@ -1,69 +0,0 @@ -FROM php:7.1-apache-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.1/cli/buster/Dockerfile b/src/7.1/cli/buster/Dockerfile deleted file mode 100755 index 47b59f8..0000000 --- a/src/7.1/cli/buster/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM php:7.1-cli-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/cli/jessie/Dockerfile b/src/7.1/cli/jessie/Dockerfile deleted file mode 100755 index c7d1278..0000000 --- a/src/7.1/cli/jessie/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM php:7.1-cli-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/cli/stretch/Dockerfile b/src/7.1/cli/stretch/Dockerfile deleted file mode 100755 index 27d4cde..0000000 --- a/src/7.1/cli/stretch/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM php:7.1-cli-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/fpm/buster/Dockerfile b/src/7.1/fpm/buster/Dockerfile deleted file mode 100755 index 4c1cbc4..0000000 --- a/src/7.1/fpm/buster/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM php:7.1-fpm-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/fpm/jessie/Dockerfile b/src/7.1/fpm/jessie/Dockerfile deleted file mode 100755 index 6e6dd4e..0000000 --- a/src/7.1/fpm/jessie/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM php:7.1-fpm-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/fpm/stretch/Dockerfile b/src/7.1/fpm/stretch/Dockerfile deleted file mode 100755 index e563f3f..0000000 --- a/src/7.1/fpm/stretch/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM php:7.1-fpm-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.1/platform/Dockerfile b/src/7.1/platform/Dockerfile deleted file mode 100644 index 328274f..0000000 --- a/src/7.1/platform/Dockerfile +++ /dev/null @@ -1,69 +0,0 @@ -FROM php:7.1-apache-jessie -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - libcurl4-openssl-dev \ - libgd-dev \ - libldap2-dev \ - libmcrypt-dev \ - libtidy-dev \ - libxslt-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install PHP Extensions -RUN docker-php-ext-configure intl && \ - docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - bcmath \ - intl \ - gd \ - ldap \ - mcrypt \ - mysqli \ - pdo \ - pdo_mysql \ - soap \ - tidy \ - xsl \ - zip - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.2/apache/buster/Dockerfile b/src/7.2/apache/buster/Dockerfile deleted file mode 100755 index 2111bf4..0000000 --- a/src/7.2/apache/buster/Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -FROM php:7.2-apache-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.2/apache/stretch/Dockerfile b/src/7.2/apache/stretch/Dockerfile deleted file mode 100755 index 2ea0484..0000000 --- a/src/7.2/apache/stretch/Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -FROM php:7.2-apache-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.2/cli/buster/Dockerfile b/src/7.2/cli/buster/Dockerfile deleted file mode 100755 index 5483d52..0000000 --- a/src/7.2/cli/buster/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.2-cli-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/cli/stretch/Dockerfile b/src/7.2/cli/stretch/Dockerfile deleted file mode 100755 index 36da0d2..0000000 --- a/src/7.2/cli/stretch/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.2-cli-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/fpm/buster/Dockerfile b/src/7.2/fpm/buster/Dockerfile deleted file mode 100755 index f2c31bd..0000000 --- a/src/7.2/fpm/buster/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.2-fpm-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.2/fpm/stretch/Dockerfile b/src/7.2/fpm/stretch/Dockerfile deleted file mode 100755 index 2d11540..0000000 --- a/src/7.2/fpm/stretch/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.2-fpm-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/apache/buster/Dockerfile b/src/7.3/apache/buster/Dockerfile deleted file mode 100755 index 602b289..0000000 --- a/src/7.3/apache/buster/Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -FROM php:7.3-apache-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.3/apache/stretch/Dockerfile b/src/7.3/apache/stretch/Dockerfile deleted file mode 100755 index 38462f9..0000000 --- a/src/7.3/apache/stretch/Dockerfile +++ /dev/null @@ -1,82 +0,0 @@ -FROM php:7.3-apache-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.3/cli/buster/Dockerfile b/src/7.3/cli/buster/Dockerfile deleted file mode 100755 index 5feaaa8..0000000 --- a/src/7.3/cli/buster/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.3-cli-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/cli/stretch/Dockerfile b/src/7.3/cli/stretch/Dockerfile deleted file mode 100755 index fbc0301..0000000 --- a/src/7.3/cli/stretch/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -FROM php:7.3-cli-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/fpm/buster/Dockerfile b/src/7.3/fpm/buster/Dockerfile deleted file mode 100755 index fe29e22..0000000 --- a/src/7.3/fpm/buster/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.3-fpm-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.3/fpm/stretch/Dockerfile b/src/7.3/fpm/stretch/Dockerfile deleted file mode 100755 index 1f9fb66..0000000 --- a/src/7.3/fpm/stretch/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -FROM php:7.3-fpm-stretch -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/7.4/apache/buster/Dockerfile b/src/7.4/apache/buster/Dockerfile deleted file mode 100755 index d9a4453..0000000 --- a/src/7.4/apache/buster/Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -FROM php:7.4-apache-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -# Apache + xdebug configuration -ENV DOCUMENT_ROOT /var/www/html -RUN { \ - echo ''; \ - echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ - echo ' LogLevel warn'; \ - echo ' ServerSignature Off'; \ - echo ' '; \ - echo ' Options +FollowSymLinks'; \ - echo ' Options -ExecCGI -Includes -Indexes'; \ - echo ' AllowOverride all'; \ - echo; \ - echo ' Require all granted'; \ - echo ' '; \ - echo ' '; \ - echo ' php_flag engine off'; \ - echo ' '; \ - echo; \ - echo ' IncludeOptional sites-available/000-default.local*'; \ - echo ''; \ - } | tee /etc/apache2/sites-available/000-default.conf - -RUN echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ - echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini && \ - a2enmod rewrite expires remoteip cgid diff --git a/src/7.4/fpm/buster/Dockerfile b/src/7.4/fpm/buster/Dockerfile deleted file mode 100755 index 441ac3f..0000000 --- a/src/7.4/fpm/buster/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.4-fpm-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/src/Dockerfile b/src/Dockerfile new file mode 100644 index 0000000..e34ab99 --- /dev/null +++ b/src/Dockerfile @@ -0,0 +1,5 @@ +ARG TAG + +FROM php:$TAG +MAINTAINER Brett Tasker "" +ENV DEBIAN_FRONTEND=noninteractive diff --git a/src/debian/Dockerfile.apache.tpl b/src/debian/Dockerfile.apache.tpl new file mode 100644 index 0000000..7d0e487 --- /dev/null +++ b/src/debian/Dockerfile.apache.tpl @@ -0,0 +1,23 @@ +# Apache configuration +ENV DOCUMENT_ROOT /var/www/html +RUN { \ + echo ''; \ + echo ' DocumentRoot ${DOCUMENT_ROOT}'; \ + echo ' LogLevel warn'; \ + echo ' ServerSignature Off'; \ + echo ' '; \ + echo ' Options +FollowSymLinks'; \ + echo ' Options -ExecCGI -Includes -Indexes'; \ + echo ' AllowOverride all'; \ + echo; \ + echo ' Require all granted'; \ + echo ' '; \ + echo ' '; \ + echo ' php_flag engine off'; \ + echo ' '; \ + echo; \ + echo ' IncludeOptional sites-available/000-default.local*'; \ + echo ''; \ + } | tee /etc/apache2/sites-available/000-default.conf && \ + echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf && \ + a2enmod rewrite expires remoteip cgid diff --git a/src/7.4/cli/buster/Dockerfile b/src/debian/Dockerfile.php.tpl old mode 100755 new mode 100644 similarity index 64% rename from src/7.4/cli/buster/Dockerfile rename to src/debian/Dockerfile.php.tpl index 42a1f71..55c2c6f --- a/src/7.4/cli/buster/Dockerfile +++ b/src/debian/Dockerfile.php.tpl @@ -1,59 +1,44 @@ -FROM php:7.4-cli-buster -MAINTAINER Brett Tasker "" -ENV DEBIAN_FRONTEND=noninteractive - -# Install components -RUN apt-get update -y && apt-get install -y \ - curl \ - git-core \ - gzip \ - openssh-client \ - unzip \ - zip \ - --no-install-recommends && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -# Install default PHP Extensions -RUN docker-php-ext-install -j$(nproc) \ - bcmath \ - mysqli \ - pdo \ - pdo_mysql - - -# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions -RUN apt-get update -y && apt-get install -y \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libgd-dev \ - libzip-dev \ - libtidy-dev \ - libxml2-dev \ - libxslt-dev \ - --no-install-recommends && \ - apt-mark auto \ - zlib1g-dev \ - libicu-dev \ - g++ \ - libldap2-dev \ - libxml2-dev \ - libxslt-dev && \ - docker-php-ext-configure intl && \ - docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ - docker-php-ext-configure gd && \ - docker-php-ext-install -j$(nproc) \ - intl \ - ldap \ - gd \ - soap \ - tidy \ - xsl \ - zip && \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ - rm -rf /var/lib/apt/lists/* - -RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ - echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file +# Install default PHP Extensions +RUN docker-php-ext-install -j$(nproc) \ + bcmath \ + mysqli \ + pdo \ + pdo_mysql + +# Install Intl, LDAP, GD, SOAP, Tidy, XSL, Zip PHP Extensions +ARG GD_BUILD_ARGS="--with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/" +RUN apt-get update -y && apt-get install -y \ + zlib1g-dev \ + libicu-dev \ + g++ \ + libldap2-dev \ + libgd-dev \ + libzip-dev \ + libtidy-dev \ + libxml2-dev \ + libxslt-dev \ + zip \ + --no-install-recommends && \ + apt-mark auto \ + zlib1g-dev \ + g++ \ + libldap2-dev \ + libxml2-dev \ + libxslt-dev && \ + docker-php-ext-configure intl && \ + docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ + docker-php-ext-configure gd ${GD_BUILD_ARGS:-}&& \ + docker-php-ext-install -j$(nproc) \ + intl \ + ldap \ + gd \ + soap \ + tidy \ + xsl \ + zip && \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ + rm -rf /var/lib/apt/lists/* + +# Pipe errors to stdErr +RUN echo "date.timezone = Pacific/Auckland" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "log_errors = On\nerror_log = /dev/stderr" > /usr/local/etc/php/conf.d/errors.ini \ No newline at end of file diff --git a/tests/Dockerfile.sut b/tests/Dockerfile.sut new file mode 100644 index 0000000..a1b2b26 --- /dev/null +++ b/tests/Dockerfile.sut @@ -0,0 +1,10 @@ +FROM ubuntu:bionic + +RUN sed -i 's/archive.ubuntu.com/ucmirror.canterbury.ac.nz/g' /etc/apt/sources.list +RUN apt-get update && apt-get install -yq --no-install-recommends libfcgi-bin curl netcat lynx && apt-get clean + +WORKDIR /app + +ADD files/ /app/ + +ENTRYPOINT ["bash", "test.sh"] \ No newline at end of file diff --git a/tests/Dockerfile.test b/tests/Dockerfile.test index 5802550..65fc49b 100644 --- a/tests/Dockerfile.test +++ b/tests/Dockerfile.test @@ -1,10 +1,4 @@ -FROM ubuntu:bionic +ARG IMAGE +ARG TAG -RUN sed -i 's/archive.ubuntu.com/ucmirror.canterbury.ac.nz/g' /etc/apt/sources.list -RUN apt-get update && apt-get install -yq --no-install-recommends libfcgi-bin curl netcat lynx && apt-get clean - -WORKDIR /app - -ADD files/ /app/ - -CMD ["bash", "test.sh"] \ No newline at end of file +FROM $IMAGE:$TAG \ No newline at end of file diff --git a/tests/files/.env b/tests/files/.env deleted file mode 100755 index 48fd997..0000000 --- a/tests/files/.env +++ /dev/null @@ -1,10 +0,0 @@ -SS_TRUSTED_PROXY_IPS="*" -SS_ENVIRONMENT_TYPE="dev" - -SS_DATABASE_SERVER="database" -SS_DATABASE_NAME="SS_mysite" -SS_DATABASE_USERNAME="root" -SS_DATABASE_PASSWORD="" - -SS_DEFAULT_ADMIN_USERNAME="admin" -SS_DEFAULT_ADMIN_PASSWORD="password" \ No newline at end of file diff --git a/tests/files/test.sh b/tests/files/test.sh index ff55d9a..6351e80 100644 --- a/tests/files/test.sh +++ b/tests/files/test.sh @@ -2,14 +2,46 @@ set -euo pipefail REQUEST_URI="/dev/build" +TAG=${TAG:-7.4-apache-buster} + +# Options + +while getopts "d" opt; do + case $opt in + d) + DEBUG=d + ;; + *) + ;; + esac +done # Retries a command on failure. # $1 - the max number of attempts # $2... - the command to run +error() { + MESSAGE=${1:-Unknown error} + echo "[ERROR] ${MESSAGE}" + exit 1 +} + +warn() { + MESSAGE=$1 + if [ -n "$DEBUG" ]; then + echo "[WARNING] ${MESSAGE}" + fi +} + +info() { + MESSAGE=$1 + if [ -n "$DEBUG" ]; then + echo "[INFO] ${MESSAGE}" + fi +} retry() { - local -r -i max_attempts="$1"; shift - local -r cmd="$@" + local -r -i max_attempts=$1; shift + local -r cmd=$* local -i attempt_num=1 until $cmd do @@ -30,6 +62,7 @@ try_curl() { } try_cgi() { + info "Attempting to try cgi connection" RESULT=$(REQUEST_URI=${REQUEST_URI:-/dev/build} \ SCRIPT_FILENAME=${WORK_DIR:-/var/www/html}/index.php \ SERVER_PROTOCOL=HTTP/1.1 \ @@ -56,44 +89,54 @@ pass() { exit 0 } -cp .env /src/ -cp _ss_environment.php /src/ +failure() { + MESSAGE="Unknown failure" + echo "[FAULT] ${MESSAGE}" +} +info "Test Runner" +info " - Arguments" +info " - REQUEST_URI=${REQUEST_URI}" +info " - TAG=${TAG}" +info " - Copying Environment files" +cp _ss_environment.php /src/ +info " - Changing ownership of codebase to 'www-data'" chown -R www-data:www-data /src -echo " - Checking database connection..." -retry 5 ./wait-for database:3306 --quiet --timeout=5 -echo " - Good" -echo "" - -case "${DISTRO}" in - apache) - try_curl - - if [[ "${RESULT}" =~ "Database build completed!" ]]; then - pass - fi - ;; - fpm) - WORK_DIR=${MOUNT_DIR:-/var/www/html} - [ -d "/src/public" ] && WORK_DIR="${WORK_DIR}/public" +info " - Checking database connection..." +retry 5 ./wait-for database:3306 --quiet --timeout=30 +info " - Good" +info "" +info "Running tests" +if [[ "${TAG}" =~ "-apache-" ]]; then + info " - Detected apache in tag, trying test via curl" + try_curl + if [[ "${RESULT}" =~ "Database build completed!" ]]; then + pass + fi +elif [[ "${TAG}" =~ "-fpm-" ]]; then + info " - Detected fpm in tag, trying test via cgi" + WORK_DIR=${MOUNT_DIR:-/var/www/html} + [ -d "/src/public" ] && WORK_DIR="${WORK_DIR}/public" + + try_cgi + # Check if 302 and for devbuildtoken and retry + if [[ "${RESULT}" =~ "Status: 302" ]]; then + info " - '302' response received, attempting to follow redirect" + TOKEN=$(echo "${RESULT}" | sed -nr 's/.*devbuildtoken=([a-z0-9]+).*/\1/p') + QUERY_STRING="devbuildtoken=${TOKEN}" try_cgi - # Check if 302 and for devbuildtoken and retry - if [[ "${RESULT}" =~ "Status: 302" ]]; then - TOKEN=$(echo "${RESULT}" | sed -nr 's/.*devbuildtoken=([a-z0-9]+).*/\1/p') - QUERY_STRING="devbuildtoken=${TOKEN}" - try_cgi - fi + fi - if [[ "${RESULT}" =~ "Database build completed!" ]]; then - pass - fi - ;; - cli) - pass "Skipping CLI tests" - ;; -esac + if [[ "${RESULT}" =~ "Database build completed!" ]]; then + pass + fi +elif [[ "${TAG}" =~ "-cli-" ]]; then + pass "Skipping CLI test" +fi # If we get here. Tests failed. -fail \ No newline at end of file +fail + +trap failure EXIT \ No newline at end of file