diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bf1ad51 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +# ---- Build Stage (for Git clone only) ---- +FROM alpine:3.21 AS builder + +RUN apk add --no-cache git +WORKDIR /src +RUN git clone --depth 1 https://github.com/bludit/bludit.git . + +# ---- Final Image ---- +FROM alpine:3.21 + +# Install only needed runtime packages +RUN apk add --no-cache bash nginx \ + php84 php84-fpm php84-opcache php84-gd php84-zlib php84-curl php84-bz2 php84-bcmath \ + php84-exif php84-fileinfo php84-iconv php84-imap php84-intl php84-ldap php84-mbstring \ + php84-mysqli php84-odbc php84-pdo php84-pdo_mysql php84-pdo_odbc php84-pdo_pgsql \ + php84-pdo_sqlite php84-pdo_dblib php84-pear php84-pecl-imagick php84-pecl-memcache \ + php84-pecl-memcached php84-pecl-mongodb php84-pecl-redis php84-pecl-smbclient \ + php84-pecl-ssh2 php84-pecl-xdebug php84-pecl-yaml php84-pgsql php84-phar php84-phpdbg \ + php84-session php84-simplexml php84-snmp php84-soap php84-sockets php84-sodium \ + php84-sqlite3 php84-sysvmsg php84-tidy php84-xml php84-xmlreader php84-xmlwriter \ + php84-xsl php84-zip php84-ctype php84-tokenizerphp84 php84-fpm php84-opcache php84-mysqli php84-session php84-xml php84-curl + +# Add unprivileged user +RUN addgroup -S appgroup && adduser -S appuser -G appgroup + +# Konfiguration kopieren +COPY nginx /etc/nginx +COPY php /etc/php84 + +# Web-Verzeichnis + App aus Build-Stage kopieren +RUN mkdir -p /usr/share/nginx/html +COPY --from=builder /src /usr/share/nginx/html + +# Berechtigungen setzen +RUN chown -R appuser:appgroup /usr/share/nginx/html && chmod -R 755 /usr/share/nginx/html + +# PHP run-Verzeichnis +RUN mkdir -p /var/run/php && chown appuser:appgroup /var/run/php + +# Expose only necessary ports +EXPOSE 80 9000 + +# Volume für Webverzeichnis (persistenzfähig) +VOLUME ["/usr/share/nginx/html"] + +# Als nicht-root Benutzer laufen +USER appuser + +# CMD: Dienste starten +CMD ["/bin/sh", "-c", "php-fpm84 && nginx -g 'daemon off;'"]