FROM php:8.3-apache-bookworm@sha256:a14446c32a3c8aeb9b4dac7fb73b03dfd8006e670d9b43ea7947e4030d3cbae6

LABEL org.opencontainers.image.title="ArmenAI VoxelBooking" \
      org.opencontainers.image.version="1.3.0" \
      org.opencontainers.image.revision="66b2979b7125bf758e5ee5c156a500974611263b" \
      org.opencontainers.image.source="https://github.com/NowSquare/VoxelBooking" \
      org.opencontainers.image.licenses="AGPL-3.0-only"

ARG SOURCE_DATE_EPOCH=1792595815

# The Timeslot calendar needs cal_days_in_month(), which the installer does not check.
RUN sed -i -e 's|http://deb.debian.org/debian-security|https://snapshot.debian.org/archive/debian-security/20261105T000000Z|' \
           -e 's|http://deb.debian.org/debian|https://snapshot.debian.org/archive/debian/20261105T000000Z|' \
           /etc/apt/sources.list.d/debian.sources \
    && apt-get -o Acquire::Check-Valid-Until=false update \
    && apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libzip-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
    && docker-php-ext-install -j"$(nproc)" calendar gd pdo_mysql zip \
    && rm -rf /var/lib/apt/lists/* /var/log/apt/* \
    && rm -f /var/log/dpkg.log /var/log/alternatives.log /var/cache/ldconfig/aux-cache \
    && a2enmod rewrite

COPY apache.conf /etc/apache2/sites-available/000-default.conf
COPY source/app/ app/
COPY source/config/ config/
COPY source/lang/ lang/
COPY source/public/ public/
COPY source/storage/ storage/
COPY source/templates/ templates/
COPY source/vendor/ vendor/
COPY source/LICENSE source/VERSION ./
COPY demo/localize-ereko.php /opt/voxelbooking/localize-ereko.php
COPY demo/ereko/localization.json /opt/voxelbooking/ereko/localization.json

RUN --mount=type=bind,target=/build \
    if [ -f /build/voxelbooking-source.tar.gz ]; then \
        install -m 0644 /build/voxelbooking-source.tar.gz public/voxelbooking-source.tar.gz; \
    fi

# The PHP base uses a sticky web root, which blocks following a root-owned symlink.
RUN chown root:root /var/www/html \
    && chmod 0755 /var/www/html \
    && install -d -o www-data -g www-data -m 0700 \
        /var/lib/voxelbooking /var/lib/voxelbooking/keys /var/lib/voxelbooking/media-journal \
    && install -o www-data -g www-data -m 0600 /dev/null /var/lib/voxelbooking/.env \
    && ln -s /var/lib/voxelbooking/.env .env \
    && ln -s /var/lib/voxelbooking/keys storage/keys \
    && ln -s /var/lib/voxelbooking/media-journal storage/media-journal \
    && chown -R www-data:www-data storage/cache storage/logs public/uploads \
    && install -d -o www-data -g www-data -m 0700 storage/sessions
