FROM alpine:3.23
# Apache + PHP
RUN  apk add --no-cache \
        apache2 \
        php84 \
        php84-common \
        php84-apache2 \
        php84-curl \
        php84-ldap \
        php84-mysqli \
        php84-gd \
        php84-xml \
        php84-mbstring \
        php84-zip \
        php84-ctype \
        php84-tokenizer \
        php84-pdo_mysql \
        php84-openssl \
        php84-bcmath \
        php84-phar \
        php84-json \
        php84-iconv \
        php84-fileinfo \
        php84-simplexml \
        php84-session \
        php84-dom \
        php84-xmlwriter \
        php84-xmlreader \
        php84-sodium \
        php84-redis \
        php84-pecl-memcached \
        php84-exif \
        curl \
        wget \
        vim \
        git \
        mysql-client \
        tini

COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf

# Where apache's PID lives
RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2

RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php84/php.ini
COPY  docker/000-default-2.4.conf /etc/apache2/conf.d/default.conf

# Enable mod_rewrite
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /etc/apache2/httpd.conf

COPY . /var/www/html

WORKDIR /var/www/html

COPY docker/docker.env /var/www/html/.env

RUN chown -R apache:apache /var/www/html

RUN \
	rm -r "/var/www/html/storage/private_uploads" \
	&& mkdir -p "/var/lib/snipeit/data/private_uploads" && ln -fs "/var/lib/snipeit/data/private_uploads" "/var/www/html/storage/private_uploads" \
    && rm -rf "/var/www/html/public/uploads" \
    && mkdir -p "/var/lib/snipeit/data/uploads" && ln -fs "/var/lib/snipeit/data/uploads" "/var/www/html/public/uploads" \
    && mkdir -p "/var/lib/snipeit/dumps" && rm -r "/var/www/html/storage/app/backups" && ln -fs "/var/lib/snipeit/dumps" "/var/www/html/storage/app/backups" \
    && mkdir -p "/var/lib/snipeit/keys" && ln -fs "/var/lib/snipeit/keys/oauth-private.key" "/var/www/html/storage/oauth-private.key" \
    && ln -fs "/var/lib/snipeit/keys/oauth-public.key" "/var/www/html/storage/oauth-public.key" \
    && chown -hR apache "/var/www/html/storage/" \
    && chown -R apache "/var/lib/snipeit"

# Install composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN mkdir -p /var/www/.composer && chown apache /var/www/.composer

# Install dependencies
USER apache
RUN COMPOSER_CACHE_DIR=/dev/null composer install --working-dir=/var/www/html

USER root

VOLUME ["/var/lib/snipeit"]

# Startup script
COPY docker/startup_alpine.sh /startup.sh
RUN chmod +x /startup.sh

ENTRYPOINT ["/sbin/tini", "--"]

CMD ["/startup.sh"]

EXPOSE 80
