# Use pre-built base image
FROM 803757433756.dkr.ecr.us-east-1.amazonaws.com/px-php-base:latest AS final

RUN apt-get update -y && apt-get install -y \
    python3 python3-dev python3-pip python3-setuptools python3-pillow python3-path libheif-examples poppler-utils \
    libpoppler-glib-dev librsvg2-bin librsvg2-dev pdf2svg ghostscript imagemagick \
    && ln -sf python3 /usr/bin/python \
    && pip install rectpack --break-system-packages

# ImageMagick: CLI binaries + PHP extension + Ghostscript (PDF delegate)
# Built from GitHub source because pecl.php.net is unreachable from this host.
RUN set -eux; \
    apt-get update -y; \
    apt-get install -y --no-install-recommends \
        libmagickwand-dev \
        imagemagick \
        ghostscript; \
    curl -fsSL https://github.com/Imagick/imagick/archive/refs/tags/3.8.1.tar.gz -o /tmp/imagick.tar.gz; \
    mkdir -p /usr/src/imagick; \
    tar -xzf /tmp/imagick.tar.gz -C /usr/src/imagick --strip-components=1; \
    cd /usr/src/imagick; \
    phpize; \
    ./configure; \
    make -j"$(nproc)"; \
    make install; \
    docker-php-ext-enable imagick; \
    rm -rf /tmp/imagick.tar.gz /usr/src/imagick /var/lib/apt/lists/*

# Allow ImageMagick to read/write PDF, PS, EPS (blocked by Debian's default policy)
RUN set -eux; \
    POLICY="$(ls /etc/ImageMagick-*/policy.xml 2>/dev/null | head -1)"; \
    test -n "$POLICY"; \
    sed -i -E 's@rights="none" pattern="(PDF|PS|EPS|XPS)"@rights="read|write" pattern="\1"@g' "$POLICY"; \
    grep -q 'rights="read|write" pattern="PDF"' "$POLICY"

# Install autotrace (pinned to specific commit for supply chain safety)
RUN git clone https://github.com/autotrace/autotrace.git /tmp/autotrace \
    && cd /tmp/autotrace \
    && ./autogen.sh \
    && LD_LIBRARY_PATH=/usr/local/lib ./configure --prefix=/usr \
    && make && make install \
    && rm -rf /tmp/autotrace

# Set environment variable
ARG ENV=dev
ENV ENV=${ENV}

# Copy configuration files
COPY docker/conf/default.${ENV}.conf /etc/nginx/conf.d/default.conf
COPY docker/conf/nginx.conf /etc/nginx/nginx.conf
COPY docker/conf/supervisord.production.conf /etc/supervisor/supervisord.conf
COPY docker/conf/magento-crontab /etc/cron.d/magento-crontab
COPY docker/conf/main.cf /etc/postfix/main.cf
COPY docker/conf/php.ini /usr/local/etc/php/php.ini
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
# Copy application files
COPY composer.json composer.lock /var/www/
# COPY package.json minify-static-js.js /var/www/
COPY node /var/www/node
COPY python /var/www/python
COPY app/code /var/www/app/code
COPY app/design /var/www/app/design
COPY patches /var/www/patches
COPY composer.json composer.lock /var/www/

# Set permissions and apply cron job
RUN chmod 0644 /etc/cron.d/magento-crontab \
    # && chown -R www-data:www-data /var/www \
    # && chmod -R 775 /var/www \
    && find /var/www -type d -exec chmod 755 {} \; \
    && find /var/www -type f -exec chmod 644 {} \; \
    && chmod +x /usr/local/bin/entrypoint.sh \
    && (chmod +x /var/www/html/app/code/Brushyourideas/Contour/Helper/contour 2>/dev/null || true)

    
# Expose port for Nginx
EXPOSE 80 3000

# Switch to www-data user for application execution
USER www-data

# Apply the cron job
RUN crontab /etc/cron.d/magento-crontab

# Set the entrypoint
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
