Dockerfile 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. FROM php:7.3.8-cli-alpine3.10
  2. LABEL maintainer="Alejandro Celaya <alejandro@alejandrocelaya.com>"
  3. ENV SWOOLE_VERSION 4.3.3
  4. ENV COMPOSER_VERSION 1.9.0
  5. WORKDIR /etc/shlink
  6. RUN \
  7. # Install mysl and calendar
  8. docker-php-ext-install -j"$(nproc)" pdo_mysql calendar && \
  9. # Install sqlite
  10. apk add --no-cache sqlite-libs sqlite-dev && \
  11. docker-php-ext-install -j"$(nproc)" pdo_sqlite && \
  12. # Install postgres
  13. apk add --no-cache postgresql-dev && \
  14. docker-php-ext-install -j"$(nproc)" pdo_pgsql && \
  15. # [Deprecated] Install intl
  16. apk add --no-cache icu-dev && \
  17. docker-php-ext-install -j"$(nproc)" intl && \
  18. # Install zip and gd
  19. apk add --no-cache libzip-dev zlib-dev libpng-dev && \
  20. docker-php-ext-install -j"$(nproc)" zip gd
  21. # Install swoole
  22. # First line fixes an error when installing pecl extensions. Found in https://github.com/docker-library/php/issues/233
  23. RUN apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS && \
  24. pecl install swoole-${SWOOLE_VERSION} && \
  25. docker-php-ext-enable swoole && \
  26. apk del .phpize-deps
  27. # Install shlink
  28. COPY . .
  29. RUN rm -rf ./docker && \
  30. wget https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar && \
  31. php composer.phar install --no-dev --optimize-autoloader --no-progress --no-interaction && \
  32. php composer.phar clear-cache && \
  33. rm composer.phar
  34. # Add shlink to the path to ease running it after container is created
  35. RUN ln -s /etc/shlink/bin/cli /usr/local/bin/shlink
  36. # Expose swoole port
  37. EXPOSE 8080
  38. # Expose params config dir, since the user is expected to provide custom config from there
  39. VOLUME /etc/shlink/config/params
  40. # Copy config specific for the image
  41. COPY docker/docker-entrypoint.sh docker-entrypoint.sh
  42. COPY docker/config/shlink_in_docker.local.php config/autoload/shlink_in_docker.local.php
  43. ENTRYPOINT ["/bin/sh", "./docker-entrypoint.sh"]