95 lines
3.6 KiB
Docker
95 lines
3.6 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; \
|
|
enable_module proxy_module /usr/lib/apache2/mod_proxy.so; \
|
|
enable_module proxy_fcgi_module /usr/lib/apache2/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"]
|