FROM php:8.5-fpm-alpine

RUN apk add --no-cache \
      apache2 \
      curl \
      libcurl \
      shadow \
      sqlite-libs && \
    apk add --no-cache --virtual .build-deps \
      $PHPIZE_DEPS \
      curl-dev \
      sqlite-dev && \
    docker-php-ext-install \
      curl \
      opcache \
      pdo_sqlite && \
    apk del .build-deps

RUN set -eu; \
    enable_module() { \
      name="$1"; \
      path="$2"; \
      if grep -q "^#LoadModule ${name} " /etc/apache2/httpd.conf; then \
        sed -i "s|^#LoadModule ${name} .*|LoadModule ${name} ${path}|" /etc/apache2/httpd.conf; \
      elif ! grep -q "^LoadModule ${name} " /etc/apache2/httpd.conf; then \
        printf "LoadModule %s %s\n" "$name" "$path" >> /etc/apache2/httpd.conf; \
      fi; \
    }; \
    enable_module rewrite_module modules/mod_rewrite.so; \
    enable_module headers_module modules/mod_headers.so; \
    enable_module proxy_module modules/mod_proxy.so; \
    enable_module proxy_fcgi_module modules/mod_proxy_fcgi.so; \
    sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/' /etc/apache2/httpd.conf; \
    sed -i 's/^Listen 80$/Listen 8080/' /etc/apache2/httpd.conf; \
    sed -i 's#^ErrorLog .*#ErrorLog /proc/self/fd/2#' /etc/apache2/httpd.conf; \
    sed -i 's#^CustomLog .*#CustomLog /proc/self/fd/1 combined#' /etc/apache2/httpd.conf; \
    if grep -q '^PidFile ' /etc/apache2/httpd.conf; then \
      sed -i 's#^PidFile .*#PidFile /tmp/httpd.pid#' /etc/apache2/httpd.conf; \
    else \
      printf '\nPidFile /tmp/httpd.pid\n' >> /etc/apache2/httpd.conf; \
    fi; \
    printf '\nServerName localhost\n' >> /etc/apache2/httpd.conf; \
    sed -i 's#^listen = .*#listen = 127.0.0.1:9000#' /usr/local/etc/php-fpm.d/www.conf; \
    sed -i 's#^;clear_env = no#clear_env = no#' /usr/local/etc/php-fpm.d/www.conf; \
    sed -i 's#^pm.max_children = .*#pm.max_children = 6#' /usr/local/etc/php-fpm.d/www.conf; \
    sed -i 's#^pm.start_servers = .*#pm.start_servers = 2#' /usr/local/etc/php-fpm.d/www.conf; \
    sed -i 's#^pm.min_spare_servers = .*#pm.min_spare_servers = 1#' /usr/local/etc/php-fpm.d/www.conf; \
    sed -i 's#^pm.max_spare_servers = .*#pm.max_spare_servers = 3#' /usr/local/etc/php-fpm.d/www.conf

COPY httpd-php-fpm.conf /etc/apache2/conf.d/php-fpm.conf
COPY opcache.ini /usr/local/etc/php/conf.d/zz-opcache.ini
COPY php-fpm-runtime.conf /usr/local/etc/php-fpm.d/zz-runtime.conf
COPY start-website.sh /usr/local/bin/start-website

COPY . /var/www/localhost/htdocs/

RUN rm -f /var/www/localhost/htdocs/index.html && \
    usermod -u 1000 apache && \
    groupmod -g 1000 apache && \
    mkdir -p \
      /run/apache2 \
      /var/log/apache2 \
      /var/www/localhost/htdocs/db \
      /tmp/website-lang && \
    chown -R apache:apache \
      /run/apache2 \
      /var/log/apache2 \
      /var/www/localhost/htdocs/db \
      /tmp/website-lang && \
    chmod 0755 /usr/local/bin/start-website

ENV WEBSITE_LANG_WRITE_DIR=/var/www/localhost/htdocs/db/lang
ENV OLLAMA_HOST=http://192.168.100.68:11434
ENV OLLAMA_MODEL=llama3.2:3b

USER apache

EXPOSE 8080

CMD ["start-website"]
