From 81f82d3b7366967aaf956d364a2570349ca03d1c Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 3 Jan 2022 18:48:08 +0100 Subject: [PATCH 1/4] Reduced docker image size by ensuring dev native libs are not included in final image --- Dockerfile | 23 +++++++---------------- docker/docker-entrypoint.sh | 6 ++---- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/Dockerfile b/Dockerfile index 30ca29e3..5f9bac01 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,23 +11,14 @@ WORKDIR /etc/shlink # Install required PHP extensions RUN \ - # Install extensions with no extra dependencies - docker-php-ext-install -j"$(nproc)" pdo_mysql calendar sockets bcmath && \ - # Install sqlite - apk add --no-cache sqlite-libs sqlite-dev && \ + # Temp install dev dependencies needed to compile the extensions + apk add --no-cache --virtual .dev-deps sqlite-dev postgresql-dev icu-dev libzip-dev zlib-dev libpng-dev gmp-dev && \ + docker-php-ext-install -j"$(nproc)" pdo_mysql pdo_pgsql intl calendar sockets bcmath zip gd gmp && \ + apk add --no-cache sqlite-libs && \ docker-php-ext-install -j"$(nproc)" pdo_sqlite && \ - # Install postgres - apk add --no-cache postgresql-dev && \ - docker-php-ext-install -j"$(nproc)" pdo_pgsql && \ - # Install intl - apk add --no-cache icu-dev && \ - docker-php-ext-install -j"$(nproc)" intl && \ - # Install zip and gd - apk add --no-cache libzip-dev zlib-dev libpng-dev && \ - docker-php-ext-install -j"$(nproc)" zip gd && \ - # Install gmp - apk add --no-cache gmp-dev && \ - docker-php-ext-install -j"$(nproc)" gmp + # Remove temp dev extensions, and install prod equivalents that are required at runtime + apk del .dev-deps && \ + apk add --no-cache postgresql icu libzip libpng gmp # Install sqlsrv driver RUN if [ $(uname -m) == "x86_64" ]; then \ diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 8f48e20a..f1c4c495 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -24,11 +24,9 @@ if [ ! -z "${GEOLITE_LICENSE_KEY}" ]; then php bin/cli visit:download-db -n ${flags} fi -# Periodicaly run visit:locate every hour -# https://shlink.io/documentation/long-running-tasks/#locate-visits -# set env var "ENABLE_PERIODIC_VISIT_LOCATE=true" to enable +# Periodically run visit:locate every hour, if ENABLE_PERIODIC_VISIT_LOCATE=true was provided if [ $ENABLE_PERIODIC_VISIT_LOCATE ]; then - echo "Configuring periodic visit locate..." + echo "Configuring periodic visit location..." echo "0 * * * * php /etc/shlink/bin/cli visit:locate -q" > /etc/crontabs/root /usr/sbin/crond & fi From 4b4f6f32017c5e3c19785a4510ff08fe2aafb99c Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 3 Jan 2022 19:10:58 +0100 Subject: [PATCH 2/4] Removed gmp extension as bcmath does the same --- .dockerignore | 1 + Dockerfile | 6 +++--- data/infra/php.Dockerfile | 3 --- data/infra/swoole.Dockerfile | 3 --- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.dockerignore b/.dockerignore index 9fb114c1..870f3610 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,6 +9,7 @@ data/GeoLite2-City* data/database.sqlite data/shlink-tests.db CHANGELOG.md +CONTRIBUTING.md UPGRADE.md composer.lock vendor diff --git a/Dockerfile b/Dockerfile index 5f9bac01..c8d6d988 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,13 +12,13 @@ WORKDIR /etc/shlink # Install required PHP extensions RUN \ # Temp install dev dependencies needed to compile the extensions - apk add --no-cache --virtual .dev-deps sqlite-dev postgresql-dev icu-dev libzip-dev zlib-dev libpng-dev gmp-dev && \ - docker-php-ext-install -j"$(nproc)" pdo_mysql pdo_pgsql intl calendar sockets bcmath zip gd gmp && \ + apk add --no-cache --virtual .dev-deps sqlite-dev postgresql-dev icu-dev libzip-dev zlib-dev libpng-dev && \ + docker-php-ext-install -j"$(nproc)" pdo_mysql pdo_pgsql intl calendar sockets bcmath zip gd && \ apk add --no-cache sqlite-libs && \ docker-php-ext-install -j"$(nproc)" pdo_sqlite && \ # Remove temp dev extensions, and install prod equivalents that are required at runtime apk del .dev-deps && \ - apk add --no-cache postgresql icu libzip libpng gmp + apk add --no-cache postgresql icu libzip libpng # Install sqlsrv driver RUN if [ $(uname -m) == "x86_64" ]; then \ diff --git a/data/infra/php.Dockerfile b/data/infra/php.Dockerfile index 96556869..4fbf676e 100644 --- a/data/infra/php.Dockerfile +++ b/data/infra/php.Dockerfile @@ -31,9 +31,6 @@ RUN docker-php-ext-install gd RUN apk add --no-cache postgresql-dev RUN docker-php-ext-install pdo_pgsql -RUN apk add --no-cache gmp-dev -RUN docker-php-ext-install gmp - RUN docker-php-ext-install sockets RUN docker-php-ext-install bcmath diff --git a/data/infra/swoole.Dockerfile b/data/infra/swoole.Dockerfile index 570ca2a9..dbaa4202 100644 --- a/data/infra/swoole.Dockerfile +++ b/data/infra/swoole.Dockerfile @@ -33,9 +33,6 @@ RUN docker-php-ext-install gd RUN apk add --no-cache postgresql-dev RUN docker-php-ext-install pdo_pgsql -RUN apk add --no-cache gmp-dev -RUN docker-php-ext-install gmp - RUN docker-php-ext-install sockets RUN docker-php-ext-install bcmath From aad24389a7c206e2dd8694a48b0fe5a38d046791 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 3 Jan 2022 19:34:36 +0100 Subject: [PATCH 3/4] Slightly reduced docker image size by merging mssql and openswoole installation steps --- Dockerfile | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index c8d6d988..f3de4a41 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,24 +20,19 @@ RUN \ apk del .dev-deps && \ apk add --no-cache postgresql icu libzip libpng -# Install sqlsrv driver -RUN if [ $(uname -m) == "x86_64" ]; then \ - wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_${MS_ODBC_SQL_VERSION}-1_amd64.apk && \ - apk add --allow-untrusted msodbcsql17_${MS_ODBC_SQL_VERSION}-1_amd64.apk && \ - apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} unixodbc-dev && \ - pecl install pdo_sqlsrv-${PDO_SQLSRV_VERSION} && \ - docker-php-ext-enable pdo_sqlsrv && \ - apk del .phpize-deps && \ - rm msodbcsql17_${MS_ODBC_SQL_VERSION}-1_amd64.apk ; \ - fi - -# Install openswoole -RUN apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} && \ +# Install openswoole and sqlsrv driver for x86_64 builds +RUN apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} unixodbc-dev && \ pecl install openswoole-${OPENSWOOLE_VERSION} && \ docker-php-ext-enable openswoole && \ + if [ $(uname -m) == "x86_64" ]; then \ + wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_${MS_ODBC_SQL_VERSION}-1_amd64.apk && \ + apk add --no-cache --allow-untrusted msodbcsql17_${MS_ODBC_SQL_VERSION}-1_amd64.apk && \ + pecl install pdo_sqlsrv-${PDO_SQLSRV_VERSION} && \ + docker-php-ext-enable pdo_sqlsrv && \ + rm msodbcsql17_${MS_ODBC_SQL_VERSION}-1_amd64.apk ; \ + fi; \ apk del .phpize-deps - # Install shlink FROM base as builder COPY . . From a9aa49c2e502d57b8de7cf51fbf3f3ec423b0840 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 3 Jan 2022 19:37:05 +0100 Subject: [PATCH 4/4] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53d4637d..a56edebc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this * *Nothing* ### Changed +* [#1277](https://github.com/shlinkio/shlink/issues/1277) Reduced docker image size to 45% the original size. * [#1268](https://github.com/shlinkio/shlink/issues/1268) Updated dependencies, including symfony/console 6 and mezzio/mezzio-swoole 4. * [#1283](https://github.com/shlinkio/shlink/issues/1283) Changed behavior of `DELETE_SHORT_URL_THRESHOLD` env var, disabling the feature if a value was not provided.