FROM php:8.3.24-fpm-alpine3.21 AS builder

USER root

RUN apk add --no-cache --virtual .build-deps \
    file \
    autoconf \
    dpkg-dev dpkg \
    g++ \
    gcc \
    libc-dev \
    make \
    pkgconf \
    re2c \
    bzip2-dev \
    postgresql17-dev \
    zip libzip libzip-dev \
    freetype freetype-dev libpng libpng-dev libjpeg-turbo libjpeg-turbo-dev libxpm libxpm-dev libwebp libwebp-dev \
    openldap-dev libldap libsasl cyrus-sasl-dev \
    gettext gettext-dev \
    aspell-dev \
    libxml2-dev \
    libxslt-dev \
    linux-headers \
    libmemcached libmemcached-dev libmemcached-libs \
    libmcrypt-dev \
    lz4 lz4-dev liblzf liblzf-dev zstd zstd-dev \
    rabbitmq-c rabbitmq-c-dev libpq libpq-dev \
    libssh2-dev \
    imagemagick imagemagick-dev

RUN docker-php-source extract && \
    mkdir -p /usr/src/php/ext/memcache && curl -fsSL https://pecl.php.net/get/memcache-8.2.tgz | tar xvz -C "/usr/src/php/ext/memcache" --strip 1 && \
    mkdir -p /usr/src/php/ext/memcached && curl -fsSL https://pecl.php.net/get/memcached-3.3.0.tgz | tar xvz -C "/usr/src/php/ext/memcached" --strip 1 && \
    mkdir -p /usr/src/php/ext/apcu && curl -fsSL https://pecl.php.net/get/apcu-5.1.25.tgz | tar xvz -C "/usr/src/php/ext/apcu" --strip 1 && \
    mkdir -p /usr/src/php/ext/mcrypt && curl -fsSL https://pecl.php.net/get/mcrypt-1.0.7.tgz | tar xvz -C "/usr/src/php/ext/mcrypt" --strip 1 && \
    mkdir -p /usr/src/php/ext/msgpack && curl -fsSL https://pecl.php.net/get/msgpack-3.0.0.tgz | tar xvz -C "/usr/src/php/ext/msgpack" --strip 1 && \
    mkdir -p /usr/src/php/ext/igbinary && curl -fsSL https://pecl.php.net/get/igbinary-3.2.16.tgz | tar xvz -C "/usr/src/php/ext/igbinary" --strip 1 && \
    mkdir -p /usr/src/php/ext/redis && curl -fsSL https://pecl.php.net/get/redis-6.2.0.tgz | tar xvz -C "/usr/src/php/ext/redis" --strip 1 && \
    mkdir -p /usr/src/php/ext/xhprof && curl -fsSL https://pecl.php.net/get/xhprof-2.3.10.tgz | tar xvz -C "/usr/src/php/ext/xhprof" --strip 1 && \
    mkdir -p /usr/src/php/ext/xdebug && curl -fsSL https://pecl.php.net/get/xdebug-3.4.5.tgz | tar xvz -C "/usr/src/php/ext/xdebug" --strip 1 && \
    mkdir -p /usr/src/php/ext/amqp && curl -fsSL https://pecl.php.net/get/amqp-2.1.2.tgz | tar xvz -C "/usr/src/php/ext/amqp" --strip 1 && \
    mkdir -p /usr/src/php/ext/ssh2 && curl -fsSL https://pecl.php.net/get/ssh2-1.4.1.tgz | tar xvz -C "/usr/src/php/ext/ssh2" --strip 1 && \
    mkdir -p /usr/src/php/ext/imagick && curl -fsSL https://pecl.php.net/get/imagick-3.8.0.tgz | tar xvz -C "/usr/src/php/ext/imagick" --strip 1 && \
    cp -fr /usr/src/php/ext/xhprof/extension/* /usr/src/php/ext/xhprof/ && \
    cp -fr /usr/src/php/ext/igbinary /usr/local/include/php/ext/igbinary && \
    cp -fr /usr/src/php/ext/msgpack /usr/local/include/php/ext/msgpack

RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-xpm --with-webp && \
    docker-php-ext-configure opcache --enable-opcache && \
    docker-php-ext-configure redis --enable-redis-igbinary --enable-redis-msgpack --enable-redis-lzf --enable-redis-zstd

RUN docker-php-ext-install mysqli pdo_mysql bz2 pgsql pdo_pgsql zip gd opcache ldap exif intl calendar sodium gettext pspell xml xmlwriter xsl shmop sysvmsg sysvsem sysvshm sockets memcache memcached apcu mcrypt msgpack igbinary redis xhprof xdebug amqp ssh2 imagick

FROM php:8.3.24-fpm-alpine3.21 AS production

USER root

COPY --from=builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/

COPY --from=builder /usr/local/etc/ /usr/local/etc/

RUN mkdir -p /etc/periodic/1min && \
    mkdir -p /opt/msmtp/

COPY bitrix.sh /etc/periodic/1min/bitrix

COPY msmtprc /opt/msmtp/.msmtprc

RUN docker-php-source delete && \
    apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing catdoc && \
    apk add --no-cache msmtp curl openssl ca-certificates tzdata poppler-utils aspell bzip2 gettext libmcrypt libldap libsasl cyrus-sasl libmemcached libmemcached-libs icu-libs libxslt freetype libpng libjpeg-turbo libxpm libwebp libgomp zip libzip libxml2 lz4 liblzf zstd libpq rabbitmq-c libssh2 imagemagick && \
    curl -fsSL https://getcomposer.org/download/latest-stable/composer.phar -o composer.phar && \
    chmod +x composer.phar && \
    mv composer.phar /usr/local/bin/composer && \
    echo "*       *       *       *       *       run-parts /etc/periodic/1min" >> /etc/crontabs/root && \
    sed -i '/^$/d' /etc/crontabs/root && \
    echo "" >> /etc/crontabs/root && \
    chmod -R a+x /etc/periodic/1min/bitrix && \
    chmod 600 /opt/msmtp/.msmtprc && \
    ln -s /opt/msmtp/.msmtprc /etc/msmtprc

RUN addgroup -g 979 bitrix && \
    adduser -D -u 979 -G bitrix bitrix

RUN mkdir -pv /opt/www /opt/.bx_temp /opt/browscap /opt/geoip2 /ssl && \
    chown -R bitrix:bitrix /usr/local/etc && \
    chown -R bitrix:bitrix /opt/www && \
    chown -R bitrix:bitrix /opt/.bx_temp && \
    chown -R bitrix:bitrix /opt/msmtp && \
    chown -R bitrix:bitrix /opt/browscap && \
    chown -R bitrix:bitrix /opt/geoip2 && \
    chown -R bitrix:bitrix /ssl

USER bitrix:bitrix
