Aleksandr T 9 месяцев назад
Родитель
Сommit
0dfbc53207

+ 34 - 13
scripts/docker-compose/Cron.Dockerfile

@@ -1,25 +1,46 @@
-FROM php:8.3-cli
+# ============================
+# Stage 1: Builder
+# ============================
+FROM php:8.3-fpm AS builder
 
+# Install build dependencies
 RUN apt-get update && apt-get install -y \
-        wget \
-        cron \
         libfreetype6-dev \
         libjpeg62-turbo-dev \
-        libmcrypt-dev \
         libpng-dev \
         libonig-dev \
         libmagickwand-dev \
         libzip-dev \
         unzip \
-        msmtp-mta \
-    && docker-php-ext-configure gd --with-freetype --with-jpeg \
-    && docker-php-ext-install -j$(nproc) gd \
-    && docker-php-ext-install -j$(nproc) pdo pdo_mysql mysqli \
-    && docker-php-ext-install -j$(nproc) zip exif opcache iconv mbstring \
-    && pecl install xdebug && docker-php-ext-enable xdebug \
-#    && pecl install mcrypt-1.0.4 && docker-php-ext-enable mcrypt \
-    && pecl install imagick-3.8.0 && docker-php-ext-enable imagick
+        pkg-config \        
+        autoconf \
+        build-essential \
+    && rm -rf /var/lib/apt/lists/*
+
+# Configure & install PHP extensions
+RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
+    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli zip exif opcache iconv mbstring \
+    && pecl install imagick-3.8.0 igbinary \
+    && yes '' | pecl install redis \
+    && docker-php-ext-enable imagick igbinary redis
+    
+# ============================
+# Stage 2: Production runtime
+# ============================
+FROM php:8.3-fpm
+
+# Install only runtime packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    msmtp-mta \
+    tini \
+    cron \
+    && rm -rf /var/lib/apt/lists/*
+
+# Copy compiled PHP extensions and config from builder
+COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions
+COPY --from=builder /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d
 
 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
 
-CMD ["cron", "-f"]
+ENTRYPOINT ["/usr/bin/tini", "--"]
+CMD ["cron", "-f"]

+ 38 - 11
scripts/docker-compose/PHP.Dockerfile

@@ -1,21 +1,48 @@
-FROM php:8.3-fpm
+# ============================
+# Stage 1: Builder
+# ============================
+FROM php:8.3-fpm AS builder
 
+# Install build dependencies
 RUN apt-get update && apt-get install -y \
-        cron \
         libfreetype6-dev \
         libjpeg62-turbo-dev \
-        libmcrypt-dev \
         libpng-dev \
         libonig-dev \
         libmagickwand-dev \
         libzip-dev \
         unzip \
-        msmtp-mta \
-    && docker-php-ext-configure gd --with-freetype --with-jpeg \
-    && docker-php-ext-install -j$(nproc) gd \
-    && docker-php-ext-install -j$(nproc) pdo pdo_mysql mysqli \
-    && docker-php-ext-install -j$(nproc) zip exif opcache iconv mbstring \
-    && pecl install xdebug && docker-php-ext-enable xdebug \
-#    && pecl install mcrypt-1.0.4 && docker-php-ext-enable mcrypt \
-    && pecl install imagick-3.8.0 && docker-php-ext-enable imagick
+        pkg-config \        
+        autoconf \
+        build-essential \
+    && rm -rf /var/lib/apt/lists/*
+
+# Configure & install PHP extensions
+RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
+    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli zip exif opcache iconv mbstring \
+    && pecl install xdebug imagick-3.8.0 \
+    && pecl install igbinary && docker-php-ext-enable igbinary \
+    && yes '' | pecl install redis && docker-php-ext-enable redis \
+    && docker-php-ext-enable xdebug imagick
+
+# ============================
+# Stage 2: Production runtime
+# ============================
+FROM php:8.3-fpm
+
+# Install only runtime packages
+RUN apt-get update && apt-get install -y --no-install-recommends msmtp-mta \
+    && rm -rf /var/lib/apt/lists/*
+
+# Copy compiled PHP extensions and config from builder
+COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions
+COPY --from=builder /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d
+
+# Optional: set working directory
+# WORKDIR /var/www/html
+
+# Optional: expose PHP-FPM port
+# EXPOSE 9000
 
+# Optional: set non-root user (if needed)
+# USER www-data

+ 1 - 0
scripts/docker-compose/PHPOpenCV.Dockerfile

@@ -79,6 +79,7 @@ RUN apt update && apt install -y --no-install-recommends \
     php8.2-mbstring \
     php8.2-mysql \
     php8.2-imagick \
+    php8.2-redis \
     php8.2-intl \
     libjpeg-turbo8 \
     libpng16-16 \