Cron.Dockerfile 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # ============================
  2. # Stage 1: Builder
  3. # ============================
  4. FROM php:8.3-fpm AS builder
  5. # Install build dependencies
  6. RUN apt-get update && apt-get install -y \
  7. libfreetype6-dev \
  8. libjpeg62-turbo-dev \
  9. libpng-dev \
  10. libonig-dev \
  11. libmagickwand-dev \
  12. libzip-dev \
  13. unzip \
  14. pkg-config \
  15. autoconf \
  16. build-essential \
  17. && rm -rf /var/lib/apt/lists/*
  18. # Configure & install PHP extensions
  19. RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
  20. && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli zip exif opcache iconv mbstring \
  21. && pecl install imagick-3.8.0 \
  22. && pecl install igbinary \
  23. && pecl install --configureoptions 'enable-redis-igbinary="yes" enable-redis-lzf="no" enable-redis-zstd="no" enable-redis-msgpack="no" enable-redis-lz4="no" with-liblz4="yes"' redis \
  24. && docker-php-ext-enable imagick igbinary redis
  25. # ============================
  26. # Stage 2: Production runtime
  27. # ============================
  28. FROM php:8.3-fpm
  29. # Install only runtime packages
  30. RUN apt-get update && apt-get install -y --no-install-recommends \
  31. msmtp-mta \
  32. tini \
  33. cron \
  34. libpng-tools \
  35. libjpeg62-turbo \
  36. libfreetype6 \
  37. libmagickwand-7.q16-10 \
  38. libzip5 \
  39. && rm -rf /var/lib/apt/lists/*
  40. # Copy compiled PHP extensions and config from builder
  41. COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions
  42. COPY --from=builder /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d
  43. RUN echo "* * * * * /usr/local/bin/php -c /usr/local/etc/php /opt/una/periodic/cron.php 2>&1 | sed -e \"s/\(.*\)/[\`date\`] \1/\" >>/var/log/unacron.log" > /tmp/crontab && crontab /tmp/crontab && rm -f /tmp/crontab
  44. ENTRYPOINT ["/usr/bin/tini", "--"]
  45. CMD ["cron", "-f"]