my-homelab-configs/apps/website/Dockerfile

97 lines
3.7 KiB
Docker

FROM php:8.5-fpm-alpine
RUN apk add --no-cache \
apache2 \
apache2-proxy \
curl \
libcurl \
shadow \
sqlite-libs && \
apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
curl-dev \
sqlite-dev && \
install_php_extension() { \
extension="$1"; \
if php -m | grep -Eiq "^${extension}$"; then \
echo "${extension} already enabled"; \
else \
docker-php-ext-install "${extension}"; \
fi; \
} && \
install_php_extension curl && \
install_php_extension pdo_sqlite && \
php -m | grep -Eiq '^curl$' && \
php -m | grep -Eiq '^pdo_sqlite$' && \
php -m | grep -Eiq 'opcache' && \
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; \
}; \
test -s /usr/lib/apache2/mod_rewrite.so; \
test -s /usr/lib/apache2/mod_headers.so; \
test -s /usr/lib/apache2/mod_proxy.so; \
test -s /usr/lib/apache2/mod_proxy_fcgi.so; \
enable_module rewrite_module /usr/lib/apache2/mod_rewrite.so; \
enable_module headers_module /usr/lib/apache2/mod_headers.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 render-static-pages.sh /usr/local/bin/render-static-pages
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 && \
chmod 0755 /usr/local/bin/render-static-pages && \
/usr/local/bin/render-static-pages /var/www/localhost/htdocs && \
chown -R apache:apache \
/run/apache2 \
/var/log/apache2 \
/var/www/localhost/htdocs/db \
/var/www/localhost/htdocs/static-pages \
/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=website-translator
USER apache
EXPOSE 8080
CMD ["start-website"]