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/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. diff --git a/Dockerfile b/Dockerfile index 30ca29e3..f3de4a41 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,42 +11,28 @@ 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 && \ + 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 && \ - # 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 -# 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 . . 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 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