From d62dce6e7e4363ccd91839e6c0a2bfb2c9b1959c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Preu=C3=9F?= Date: Sun, 5 Dec 2021 22:41:32 +0100 Subject: [PATCH] Optimize image size --- .github/workflows/{laravel.yml => build.yml} | 2 +- check-platform-reqs.sh | 33 ++++++++++++++++++++ runtimes/laravel:8.0-octane/Dockerfile | 28 ++++++++++------- runtimes/laravel:8.1-octane/Dockerfile | 28 ++++++++++------- 4 files changed, 68 insertions(+), 23 deletions(-) rename .github/workflows/{laravel.yml => build.yml} (98%) create mode 100755 check-platform-reqs.sh diff --git a/.github/workflows/laravel.yml b/.github/workflows/build.yml similarity index 98% rename from .github/workflows/laravel.yml rename to .github/workflows/build.yml index 0d1cff9..719eec3 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -on: [push, pull_request] +on: [ push ] name: Build jobs: build: diff --git a/check-platform-reqs.sh b/check-platform-reqs.sh new file mode 100755 index 0000000..69603dd --- /dev/null +++ b/check-platform-reqs.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +if [ "$#" -eq 0 ]; then + VERSION_MATRIX=('bpkg.io/laravel:8.0-octane' 'bpkg.io/laravel:8.1-octane') +else + VERSION_MATRIX=("$@") +fi + +EXTENSION_MATRIX=( + 'bcmath' 'curl' 'date' 'imagick' 'exif' 'fileinfo' 'hash' 'PDO' 'sockets' + 'json' 'mbstring' 'pdo_mysql' 'pdo_sqlite' 'sqlite3' 'zip' 'pcntl' 'redis' + 'swoole' 'posix' 'gd' 'mongodb' +) + +for version in "${VERSION_MATRIX[@]}" +do + for extension in "${EXTENSION_MATRIX[@]}" + do + command="$command if(!extension_loaded('$extension')) { echo 'ERROR: Extension $extension on $version is missing.' . PHP_EOL;}" + done + + command="$command echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . PHP_EOL;" + command="$command echo 'post_max_size: ' . ini_get('post_max_size') . PHP_EOL;" + + RESULT=$(docker run -it --rm "$version" php -r "$command") + + echo "$RESULT" + + if [[ $RESULT == *"ERROR"* ]]; then + echo "Checks failed, abort." + exit 1 + fi +done diff --git a/runtimes/laravel:8.0-octane/Dockerfile b/runtimes/laravel:8.0-octane/Dockerfile index b8ce1e8..d88cf81 100644 --- a/runtimes/laravel:8.0-octane/Dockerfile +++ b/runtimes/laravel:8.0-octane/Dockerfile @@ -4,17 +4,23 @@ WORKDIR /var/www/html # STSTEM: Install required packages RUN apk --no-cache upgrade && \ - apk --no-cache add bash git sudo openssh libxml2-dev postgresql-dev oniguruma-dev autoconf gcc g++ make npm freetype-dev libjpeg-turbo-dev libpng-dev libzip-dev - -# COMPOSER: install binary and prestissimo -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer - -# PHP: install extensions -RUN pecl channel-update pecl.php.net -RUN pecl install ssh2 swoole -RUN docker-php-ext-configure gd --with-freetype --with-jpeg -RUN docker-php-ext-install mbstring xml pcntl gd zip sockets pdo pdo_pgsql pdo_mysql bcmath -RUN docker-php-ext-enable mbstring xml gd zip swoole pcntl sockets bcmath pdo pdo_pgsql pdo_mysql + apk --no-cache add bash git openssh npm gcc && \ + apk --no-cache add libxml2-dev postgresql-dev oniguruma-dev freetype-dev libjpeg-turbo-dev libpng-dev libzip-dev imagemagick-dev && \ + apk --no-cache add --virtual .build-deps autoconf g++ make && \ + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ +# PHP: Install extensions + pecl channel-update pecl.php.net && \ + pecl install swoole imagick mongodb redis && \ + docker-php-ext-configure gd --with-freetype --with-jpeg && \ + docker-php-ext-install mbstring xml exif pcntl gd zip sockets pdo pdo_pgsql pdo_mysql bcmath && \ + docker-php-ext-enable mbstring xml gd zip swoole imagick mongodb redis exif pcntl sockets bcmath pdo pdo_pgsql pdo_mysql && \ +# PHP: Configure ini + echo 'post_max_size = 200M' >> /usr/local/etc/php/conf.d/docker-php-overrides.ini && \ + echo 'upload_max_filesize = 200M' >> /usr/local/etc/php/conf.d/docker-php-overrides.ini && \ +# CONTAINER: Cleanup build dependencies + apk del .build-deps && \ + docker-php-source delete +# CONTAINER: Expose port 8000 and set command EXPOSE 8000 CMD ["php","artisan","octane:start", "--host=0.0.0.0"] diff --git a/runtimes/laravel:8.1-octane/Dockerfile b/runtimes/laravel:8.1-octane/Dockerfile index 0ee9030..fdfe3e2 100644 --- a/runtimes/laravel:8.1-octane/Dockerfile +++ b/runtimes/laravel:8.1-octane/Dockerfile @@ -4,17 +4,23 @@ WORKDIR /var/www/html # STSTEM: Install required packages RUN apk --no-cache upgrade && \ - apk --no-cache add bash git sudo openssh libxml2-dev postgresql-dev oniguruma-dev autoconf gcc g++ make npm freetype-dev libjpeg-turbo-dev libpng-dev libzip-dev - -# COMPOSER: install binary and prestissimo -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer - -# PHP: install extensions -RUN pecl channel-update pecl.php.net -RUN pecl install ssh2 swoole -RUN docker-php-ext-configure gd --with-freetype --with-jpeg -RUN docker-php-ext-install mbstring xml pcntl gd zip sockets pdo pdo_pgsql pdo_mysql bcmath -RUN docker-php-ext-enable mbstring xml gd zip swoole pcntl sockets bcmath pdo pdo_pgsql pdo_mysql + apk --no-cache add bash git openssh npm gcc && \ + apk --no-cache add libxml2-dev postgresql-dev oniguruma-dev freetype-dev libjpeg-turbo-dev libpng-dev libzip-dev imagemagick-dev && \ + apk --no-cache add --virtual .build-deps autoconf g++ make && \ + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ +# PHP: Install extensions + pecl channel-update pecl.php.net && \ + pecl install swoole imagick mongodb redis && \ + docker-php-ext-configure gd --with-freetype --with-jpeg && \ + docker-php-ext-install mbstring xml exif pcntl gd zip sockets pdo pdo_pgsql pdo_mysql bcmath && \ + docker-php-ext-enable mbstring xml gd zip swoole imagick mongodb redis exif pcntl sockets bcmath pdo pdo_pgsql pdo_mysql && \ +# PHP: Configure ini + echo 'post_max_size = 200M' >> /usr/local/etc/php/conf.d/docker-php-overrides.ini && \ + echo 'upload_max_filesize = 200M' >> /usr/local/etc/php/conf.d/docker-php-overrides.ini && \ +# CONTAINER: Cleanup build dependencies + apk del .build-deps && \ + docker-php-source delete +# CONTAINER: Expose port 8000 and set command EXPOSE 8000 CMD ["php","artisan","octane:start", "--host=0.0.0.0"]