shlink/Dockerfile

81 lines
2.7 KiB
Text
Raw Normal View History

2021-02-07 11:24:01 +03:00
FROM php:8.0.2-alpine3.13 as base
2019-08-16 19:38:26 +03:00
ARG SHLINK_VERSION=latest
2021-01-30 12:08:33 +03:00
ENV SHLINK_VERSION ${SHLINK_VERSION}
2021-02-10 00:55:30 +03:00
ENV SWOOLE_VERSION 4.6.3
2021-01-30 11:45:47 +03:00
ENV PDO_SQLSRV_VERSION 5.9.0
ENV LC_ALL "C"
2019-08-16 19:38:26 +03:00
WORKDIR /etc/shlink
# Install required PHP extensions
2019-08-16 19:38:26 +03:00
RUN \
# Install mysql and calendar
2019-08-16 19:38:26 +03:00
docker-php-ext-install -j"$(nproc)" pdo_mysql calendar && \
# Install sqlite
apk add --no-cache sqlite-libs sqlite-dev && \
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
2019-08-16 19:38:26 +03:00
apk add --no-cache icu-dev && \
docker-php-ext-install -j"$(nproc)" intl && \
2019-08-16 19:38:26 +03:00
# 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
2019-08-16 19:38:26 +03:00
2020-05-05 22:58:23 +03:00
# 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_17.5.1.1-1_amd64.apk && \
apk add --allow-untrusted msodbcsql17_17.5.1.1-1_amd64.apk && \
apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} unixodbc-dev && \
2021-01-30 11:45:47 +03:00
pecl install pdo_sqlsrv-${PDO_SQLSRV_VERSION} && \
2020-05-05 22:58:23 +03:00
docker-php-ext-enable pdo_sqlsrv && \
apk del .phpize-deps && \
2020-05-15 19:40:20 +03:00
rm msodbcsql17_17.5.1.1-1_amd64.apk ; \
2020-05-05 22:58:23 +03:00
fi
2019-08-16 19:38:26 +03:00
2020-05-05 22:58:23 +03:00
# Install swoole
RUN apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} && \
2020-05-05 22:58:23 +03:00
pecl install swoole-${SWOOLE_VERSION} && \
docker-php-ext-enable swoole && \
apk del .phpize-deps
2019-08-16 19:38:26 +03:00
# Install shlink
FROM base as builder
2019-08-16 19:38:26 +03:00
COPY . .
2020-10-25 19:59:37 +03:00
COPY --from=composer:2 /usr/bin/composer ./composer.phar
2020-03-22 12:01:34 +03:00
RUN apk add --no-cache git && \
php composer.phar install --no-dev --optimize-autoloader --prefer-dist --no-progress --no-interaction && \
php composer.phar clear-cache && \
2020-03-22 12:01:34 +03:00
rm -r docker composer.* && \
sed -i "s/%SHLINK_VERSION%/${SHLINK_VERSION}/g" config/autoload/app_options.global.php
# Prepare final image
FROM base
LABEL maintainer="Alejandro Celaya <alejandro@alejandrocelaya.com>"
2019-08-16 19:38:26 +03:00
COPY --from=builder /etc/shlink .
2019-08-16 19:38:26 +03:00
RUN ln -s /etc/shlink/bin/cli /usr/local/bin/shlink
# Expose default swoole port
2019-08-16 19:38:26 +03:00
EXPOSE 8080
# Expose params config dir, since the user is expected to provide custom config from there
VOLUME /etc/shlink/config/params
# Expose data to have it persistent when using shlink as a docker service or similar
VOLUME /etc/shlink/data
2019-08-16 19:38:26 +03:00
# Copy config specific for the image
COPY docker/docker-entrypoint.sh docker-entrypoint.sh
COPY docker/config/shlink_in_docker.local.php config/autoload/shlink_in_docker.local.php
2019-12-18 16:54:48 +03:00
COPY docker/config/php.ini ${PHP_INI_DIR}/conf.d/
2019-08-16 19:38:26 +03:00
ENTRYPOINT ["/bin/sh", "./docker-entrypoint.sh"]