shlink/Dockerfile

57 lines
2.0 KiB
Docker
Raw Normal View History

2019-11-15 10:55:06 -06:00
FROM php:7.3-alpine
2019-08-16 11:38:26 -05:00
LABEL maintainer="Alejandro Celaya <alejandro@alejandrocelaya.com>"
2019-11-15 10:55:06 -06:00
ARG SHLINK_VERSION=1.20.0
ENV SHLINK_VERSION ${SHLINK_VERSION}
2019-11-15 10:55:06 -06:00
ENV SWOOLE_VERSION 4.4.12
ENV COMPOSER_VERSION 1.9.1
2019-08-16 11:38:26 -05:00
WORKDIR /etc/shlink
RUN \
# Install mysl and calendar
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 && \
# [Deprecated] 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 swoole
# First line fixes an error when installing pecl extensions. Found in https://github.com/docker-library/php/issues/233
RUN apk add --no-cache --virtual .phpize-deps ${PHPIZE_DEPS} && \
2019-08-16 11:38:26 -05:00
pecl install swoole-${SWOOLE_VERSION} && \
docker-php-ext-enable swoole && \
apk del .phpize-deps
# Install shlink
COPY . .
RUN rm -rf ./docker && \
wget https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar && \
php composer.phar install --no-dev --optimize-autoloader --prefer-dist --no-progress --no-interaction && \
2019-08-16 11:38:26 -05:00
php composer.phar clear-cache && \
rm composer.*
2019-08-16 11:38:26 -05:00
# Add shlink to the path to ease running it after container is created
RUN ln -s /etc/shlink/bin/cli /usr/local/bin/shlink
RUN sed -i "s/%SHLINK_VERSION%/${SHLINK_VERSION}/g" config/autoload/app_options.global.php
2019-08-16 11:38:26 -05:00
# Expose swoole port
EXPOSE 8080
# Expose params config dir, since the user is expected to provide custom config from there
VOLUME /etc/shlink/config/params
# 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
ENTRYPOINT ["/bin/sh", "./docker-entrypoint.sh"]