# syntax=docker/dockerfile:1

FROM node:24-alpine AS assets
WORKDIR /app
COPY package.json yarn.lock* ./
RUN corepack enable && if [ -f yarn.lock ]; then yarn install --frozen-lockfile; else yarn install; fi
COPY webpack.config.js ./
COPY assets ./assets
COPY public ./public
RUN yarn build

FROM composer:2 AS vendor
WORKDIR /app
COPY composer.json composer.lock* ./
RUN if [ -f composer.lock ]; then composer install --no-dev --no-scripts --prefer-dist --no-interaction --ignore-platform-reqs; \
    else composer update --no-dev --no-scripts --prefer-dist --no-interaction --ignore-platform-reqs; fi
COPY . .
RUN composer dump-autoload --classmap-authoritative --no-dev \
    && composer run-script --no-dev post-install-cmd || true

FROM php:8.4-fpm-alpine AS runtime

WORKDIR /app

RUN apk add --no-cache \
        tzdata postgresql-dev postgresql-client libpq libzip-dev \
        libjpeg-turbo-dev freetype-dev libwebp-dev libpng-dev icu-dev \
        oniguruma-dev bash autoconf g++ make \
    && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
    && docker-php-ext-install -j$(nproc) \
        zip pdo pdo_pgsql pdo_mysql gd intl opcache \
    && pecl install redis \
    && docker-php-ext-enable redis \
    && rm -rf /tmp/pear /var/cache/apk/*

ENV TZ=Europe/Moscow
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo "$TZ" > /etc/timezone

COPY docker/fpm-pool.conf /usr/local/etc/php-fpm.d/zz-docker.conf
COPY --from=vendor /app /app
COPY --from=assets /app/public/build /app/public/build

RUN mkdir -p var/cache var/log public/uploads public/banners \
    && chown -R www-data:www-data var public/uploads public/banners \
    && chmod -R 775 var

ENV APP_ENV=prod APP_DEBUG=0
USER www-data
RUN APP_SECRET=build-placeholder \
    DATABASE_URL="postgresql://build:build@127.0.0.1:5432/build" \
    DATABASE_BITRIX_URL="mysql://build:build@127.0.0.1:3306/build" \
    REDIS_URL="redis://127.0.0.1:6379" \
    TRUSTED_PROXIES="127.0.0.1" \
    CORS_ALLOW_ORIGIN="^https?://.*$" \
    TECH_MAINTENANCE=false \
    php bin/console cache:warmup --env=prod || true

EXPOSE 9000
CMD ["php-fpm", "-F"]
