Dockerfile.fpm 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. FROM php:8.1-fpm-bullseye
  2. ENV COMPOSER_MEMORY_LIMIT=-1
  3. ARG DEBIAN_FRONTEND=noninteractive
  4. WORKDIR /var/www/
  5. # Get Composer binary
  6. COPY --from=composer:2.4.4 /usr/bin/composer /usr/bin/composer
  7. # Install package dependencies
  8. RUN apt-get update \
  9. && apt-get upgrade -y \
  10. # && apt-get install -y --no-install-recommends apt-utils \
  11. && apt-get install -y --no-install-recommends \
  12. ## Standard
  13. locales \
  14. locales-all \
  15. git \
  16. gosu \
  17. zip \
  18. unzip \
  19. libzip-dev \
  20. libcurl4-openssl-dev \
  21. ## Image Optimization
  22. optipng \
  23. pngquant \
  24. jpegoptim \
  25. gifsicle \
  26. ## Image Processing
  27. libjpeg62-turbo-dev \
  28. libpng-dev \
  29. libmagickwand-dev \
  30. # Required for GD
  31. libxpm4 \
  32. libxpm-dev \
  33. libwebp7 \
  34. libwebp-dev \
  35. ## Video Processing
  36. ffmpeg \
  37. ## Database
  38. # libpq-dev \
  39. # libsqlite3-dev \
  40. mariadb-client \
  41. # Locales Update
  42. && sed -i '/en_US/s/^#//g' /etc/locale.gen \
  43. && locale-gen \
  44. && update-locale \
  45. # Install PHP extensions
  46. && docker-php-source extract \
  47. #PHP Imagemagick extensions
  48. && pecl install imagick \
  49. && docker-php-ext-enable imagick \
  50. # PHP GD extensions
  51. && docker-php-ext-configure gd \
  52. --with-freetype \
  53. --with-jpeg \
  54. --with-webp \
  55. --with-xpm \
  56. && docker-php-ext-install -j$(nproc) gd \
  57. #PHP Redis extensions
  58. && pecl install redis \
  59. && docker-php-ext-enable redis \
  60. #PHP Database extensions
  61. && docker-php-ext-install pdo_mysql \
  62. #pdo_pgsql pdo_sqlite \
  63. #PHP extensions (dependencies)
  64. && docker-php-ext-configure intl \
  65. && docker-php-ext-install -j$(nproc) intl bcmath zip pcntl exif curl \
  66. #Cleanup
  67. && docker-php-source delete \
  68. && apt-get autoremove --purge -y \
  69. && apt-get clean \
  70. && rm -rf /var/cache/apt \
  71. && rm -rf /var/lib/apt/lists/
  72. # Use the default production configuration
  73. COPY contrib/docker/php.production.ini "$PHP_INI_DIR/php.ini"
  74. COPY . /var/www/
  75. # for detail why storage is copied this way, pls refer to https://github.com/pixelfed/pixelfed/pull/2137#discussion_r434468862
  76. RUN cp -r storage storage.skel \
  77. && composer install --prefer-dist --no-interaction --no-ansi --optimize-autoloader \
  78. && rm -rf html && ln -s public html \
  79. && chown -R www-data:www-data /var/www
  80. RUN php artisan horizon:publish
  81. VOLUME /var/www/storage /var/www/bootstrap
  82. CMD ["/var/www/contrib/docker/start.fpm.sh"]