Run website with Apache PHP-FPM and OPcache
This commit is contained in:
parent
d1df0bcf6e
commit
1038ea806c
|
|
@ -1,41 +1,73 @@
|
||||||
FROM alpine:3.19
|
FROM php:8.5-fpm-alpine
|
||||||
|
|
||||||
RUN apk update && apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
apache2 \
|
apache2 \
|
||||||
php82 \
|
curl \
|
||||||
php82-apache2 \
|
libcurl \
|
||||||
php82-pdo \
|
shadow \
|
||||||
php82-pdo_sqlite \
|
sqlite-libs && \
|
||||||
php82-curl \
|
apk add --no-cache --virtual .build-deps \
|
||||||
curl \
|
$PHPIZE_DEPS \
|
||||||
shadow
|
curl-dev \
|
||||||
|
sqlite-dev && \
|
||||||
|
docker-php-ext-install \
|
||||||
|
curl \
|
||||||
|
opcache \
|
||||||
|
pdo_sqlite && \
|
||||||
|
apk del .build-deps
|
||||||
|
|
||||||
RUN ln -sf /usr/bin/php82 /usr/bin/php
|
RUN set -eu; \
|
||||||
|
enable_module() { \
|
||||||
RUN sed -i 's/#LoadModule rewrite_module/LoadModule rewrite_module/' /etc/apache2/httpd.conf && \
|
name="$1"; \
|
||||||
sed -i 's/#LoadModule headers_module/LoadModule headers_module/' /etc/apache2/httpd.conf && \
|
path="$2"; \
|
||||||
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/' /etc/apache2/httpd.conf && \
|
if grep -q "^#LoadModule ${name} " /etc/apache2/httpd.conf; then \
|
||||||
sed -i 's/^Listen 80$/Listen 8080/' /etc/apache2/httpd.conf && \
|
sed -i "s|^#LoadModule ${name} .*|LoadModule ${name} ${path}|" /etc/apache2/httpd.conf; \
|
||||||
sed -i 's#^ErrorLog .*#ErrorLog /proc/self/fd/2#' /etc/apache2/httpd.conf && \
|
elif ! grep -q "^LoadModule ${name} " /etc/apache2/httpd.conf; then \
|
||||||
sed -i 's#^CustomLog .*#CustomLog /proc/self/fd/1 combined#' /etc/apache2/httpd.conf && \
|
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 \
|
if grep -q '^PidFile ' /etc/apache2/httpd.conf; then \
|
||||||
sed -i 's#^PidFile .*#PidFile /tmp/httpd.pid#' /etc/apache2/httpd.conf; \
|
sed -i 's#^PidFile .*#PidFile /tmp/httpd.pid#' /etc/apache2/httpd.conf; \
|
||||||
else \
|
else \
|
||||||
printf '\nPidFile /tmp/httpd.pid\n' >> /etc/apache2/httpd.conf; \
|
printf '\nPidFile /tmp/httpd.pid\n' >> /etc/apache2/httpd.conf; \
|
||||||
fi
|
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/
|
COPY . /var/www/localhost/htdocs/
|
||||||
|
|
||||||
RUN rm -f /var/www/localhost/htdocs/index.html
|
RUN rm -f /var/www/localhost/htdocs/index.html && \
|
||||||
|
usermod -u 1000 apache && \
|
||||||
RUN mkdir -p /var/www/localhost/htdocs/db && \
|
|
||||||
chown -R apache:apache /var/www/localhost/htdocs/db && \
|
|
||||||
chmod -R 755 /var/www/localhost/htdocs/db
|
|
||||||
|
|
||||||
RUN usermod -u 1000 apache && \
|
|
||||||
groupmod -g 1000 apache && \
|
groupmod -g 1000 apache && \
|
||||||
mkdir -p /run/apache2 /var/log/apache2 /tmp/website-lang && \
|
mkdir -p \
|
||||||
chown -R apache:apache /run/apache2 /var/log/apache2 /tmp/website-lang /var/www/localhost/htdocs/db
|
/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 WEBSITE_LANG_WRITE_DIR=/var/www/localhost/htdocs/db/lang
|
||||||
ENV OLLAMA_HOST=http://192.168.100.68:11434
|
ENV OLLAMA_HOST=http://192.168.100.68:11434
|
||||||
|
|
@ -45,4 +77,4 @@ USER apache
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
|
CMD ["start-website"]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<FilesMatch "\.php$">
|
||||||
|
SetHandler "proxy:fcgi://127.0.0.1:9000"
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
<Directory "/var/www/localhost/htdocs">
|
||||||
|
AllowOverride None
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
opcache.enable=1
|
||||||
|
opcache.enable_cli=1
|
||||||
|
opcache.validate_timestamps=0
|
||||||
|
opcache.memory_consumption=64
|
||||||
|
opcache.interned_strings_buffer=8
|
||||||
|
opcache.max_accelerated_files=4000
|
||||||
|
opcache.jit=0
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
[global]
|
||||||
|
pid = /tmp/php-fpm.pid
|
||||||
|
error_log = /proc/self/fd/2
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
mkdir -p \
|
||||||
|
/run/apache2 \
|
||||||
|
/var/log/apache2 \
|
||||||
|
"$WEBSITE_LANG_WRITE_DIR" \
|
||||||
|
"${WEBSITE_IDEAS_WRITE_DIR:-/var/www/localhost/htdocs/db/ideas}" \
|
||||||
|
/tmp/website-lang
|
||||||
|
|
||||||
|
php-fpm -D
|
||||||
|
|
||||||
|
exec httpd -D FOREGROUND
|
||||||
|
|
@ -89,10 +89,10 @@ spec:
|
||||||
periodSeconds: 30
|
periodSeconds: 30
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 25m
|
cpu: 100m
|
||||||
memory: 64Mi
|
memory: 128Mi
|
||||||
limits:
|
limits:
|
||||||
memory: 256Mi
|
memory: 384Mi
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: apache-run
|
- name: apache-run
|
||||||
mountPath: /run/apache2
|
mountPath: /run/apache2
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue