Files

68 lines
2.5 KiB
Docker
Raw Permalink Normal View History

2025-11-21 08:35:27 +01:00
FROM php:8.5-alpine3.22 AS base
2019-08-16 18:38:26 +02:00
ARG SHLINK_VERSION=latest
ENV SHLINK_VERSION=${SHLINK_VERSION}
ARG SHLINK_RUNTIME=rr
ENV SHLINK_RUNTIME=${SHLINK_RUNTIME}
2023-05-19 19:38:36 +02:00
ENV USER_ID='1001'
2026-04-02 10:57:50 +02:00
ENV PDO_SQLSRV_VERSION='5.13.0'
2025-12-04 22:45:21 +01:00
ENV MS_ODBC_DOWNLOAD='fae28b9a-d880-42fd-9b98-d779f0fdd77f'
2025-11-21 08:35:27 +01:00
ENV MS_ODBC_SQL_VERSION='18_18.5.1.1'
ENV LC_ALL='C'
2019-08-16 18:38:26 +02:00
WORKDIR /etc/shlink
# Install required PHP extensions
2019-08-16 18:38:26 +02:00
RUN \
# Temp install dev dependencies needed to compile the extensions \
2025-11-07 16:58:19 +01:00
apk add --no-cache --virtual .dev-deps sqlite-dev postgresql-dev icu-dev libzip-dev zlib-dev linux-headers && \
docker-php-ext-install -j"$(nproc)" pdo_mysql pdo_pgsql intl calendar sockets bcmath zip && \
apk add --no-cache sqlite-libs && \
2019-08-16 18:38:26 +02:00
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
2019-08-16 18:38:26 +02:00
2024-02-12 20:29:40 +01:00
# Install sqlsrv driver for x86_64 builds
RUN if [ $(uname -m) == "x86_64" ]; then \
apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} unixodbc-dev && \
wget https://download.microsoft.com/download/${MS_ODBC_DOWNLOAD}/msodbcsql${MS_ODBC_SQL_VERSION}-1_amd64.apk && \
apk add --allow-untrusted msodbcsql${MS_ODBC_SQL_VERSION}-1_amd64.apk && \
2021-01-30 09:45:47 +01:00
pecl install pdo_sqlsrv-${PDO_SQLSRV_VERSION} && \
2020-05-05 21:58:23 +02:00
docker-php-ext-enable pdo_sqlsrv && \
rm msodbcsql${MS_ODBC_SQL_VERSION}-1_amd64.apk && \
apk del .phpize-deps; \
fi
2019-08-16 18:38:26 +02:00
# Install shlink
2024-11-30 13:53:19 +01:00
FROM base AS builder
2019-08-16 18:38:26 +02:00
COPY . .
2020-10-25 17:59:37 +01:00
COPY --from=composer:2 /usr/bin/composer ./composer.phar
2020-03-22 10:01:34 +01:00
RUN apk add --no-cache git && \
2024-02-16 23:02:46 +01:00
php composer.phar install --no-dev --prefer-dist --optimize-autoloader --no-progress --no-interaction && \
php composer.phar clear-cache && \
2020-03-22 10:01:34 +01:00
rm -r docker composer.* && \
2024-10-24 08:49:58 +02:00
sed -i "s/%SHLINK_VERSION%/${SHLINK_VERSION}/g" module/Core/src/Config/Options/AppOptions.php
# Prepare final image
FROM base
LABEL maintainer="Alejandro Celaya <alejandro@alejandrocelaya.com>"
2019-08-16 18:38:26 +02:00
2024-02-13 08:55:22 +01:00
COPY --from=builder --chown=${USER_ID} /etc/shlink .
RUN ln -s /etc/shlink/bin/cli /usr/local/bin/shlink && \
if [ "$SHLINK_RUNTIME" == 'rr' ]; then \
php ./vendor/bin/rr get --no-interaction --no-config --location bin/ && chmod +x bin/rr ; \
fi;
2019-08-16 18:38:26 +02:00
# Expose default port
2019-08-16 18:38:26 +02:00
EXPOSE 8080
# Copy config specific for the image
COPY docker/docker-entrypoint.sh docker-entrypoint.sh
2019-12-18 14:54:48 +01:00
COPY docker/config/php.ini ${PHP_INI_DIR}/conf.d/
2019-08-16 18:38:26 +02:00
2024-02-13 08:55:22 +01:00
USER ${USER_ID}
2021-06-13 23:51:16 +01:00
2019-08-16 18:38:26 +02:00
ENTRYPOINT ["/bin/sh", "./docker-entrypoint.sh"]