Optimize docker image
Some checks failed
Build WHMCS PHP-FPM / build (push) Has been cancelled

- Removed old and unused packages
- Optimized Dockerfile steps (image is over 100mb smaller now)
- Updated PHP version
- Optimized whmcs.ini config
- Cleaner Dockerfile using a helper to install and configure needed packages
- Now using www-data user instead of root
This commit is contained in:
EdyTheCow
2025-10-05 22:59:48 +02:00
parent da82ea2277
commit 7e3b577229
3 changed files with 32 additions and 1983 deletions

View File

@@ -1,58 +1,28 @@
FROM php:8.1-fpm
ENV DEBIAN_FRONTEND noninteractive
FROM php:8.3-fpm-bookworm
# Fetch the helper
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# Install all WHMCS required extensions
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
libzip-dev \
zip \
curl \
libmemcached-dev \
libz-dev \
libpq-dev \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
libmcrypt-dev; \
rm -rf /var/lib/apt/lists/*
install-php-extensions \
bcmath gd gmp imap intl mbstring mysqli pdo_mysql soap zip
# Install additional PHP Packages and WHMCS Requirements
RUN docker-php-ext-configure zip && \
docker-php-ext-install zip pdo_mysql mysqli
# ionCube
RUN set -eux; \
arch="$(uname -m)"; case "$arch" in x86_64|amd64) a="x86-64";; aarch64|arm64) a="aarch64";; *) echo "Unsupported $arch"; exit 1;; esac; \
curl -fsSL "https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_${a}.tar.gz" -o /tmp/ioncube.tar.gz; \
tar -xzf /tmp/ioncube.tar.gz -C /tmp; \
php_minor="$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')"; \
ext_dir="$(php -r 'echo ini_get("extension_dir");')"; \
cp "/tmp/ioncube/ioncube_loader_lin_${php_minor}.so" "${ext_dir}/"; \
echo "zend_extension=ioncube_loader_lin_${php_minor}.so" > /usr/local/etc/php/conf.d/00-ioncube.ini; \
rm -rf /tmp/ioncube*
RUN docker-php-ext-configure gd \
--prefix=/usr \
--with-jpeg \
--with-webp \
--with-freetype; \
docker-php-ext-install gd; \
php -r 'var_dump(gd_info());'
COPY ./whmcs.ini /usr/local/etc/php/conf.d/zz-whmcs.ini
COPY ./xwhmcs.pool.conf /usr/local/etc/php-fpm.d/zz-whmcs.conf
RUN apt-get update -yqq && \
apt-get install -y zlib1g-dev libicu-dev g++ && \
docker-php-ext-configure intl && \
docker-php-ext-install intl
RUN rm /etc/apt/preferences.d/no-debian-php && \
apt-get -y install libxml2-dev php-soap && \
docker-php-ext-install soap;
# Install the php ioncube loader (essential part to run WHMCS)
RUN cd /tmp \
&& curl -o ioncube.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \
&& tar zxpf ioncube.tar.gz \
&& mv ioncube/ioncube_loader_lin_8.1.so /usr/local/lib/php/extensions/* \
&& rm -Rf ioncube.tar.gz ioncube \
&& echo "zend_extension=ioncube_loader_lin_8.1.so" > /usr/local/etc/php/conf.d/docker-php-ext-ioncube_loader.ini \
&& rm -rf /tmp/ioncube*
COPY ./whmcs.ini /usr/local/etc/php/conf.d
COPY ./xwhmcs.pool.conf /usr/local/etc/php-fpm.d/
COPY ./php.ini /usr/local/etc/php/php.ini
USER root
RUN usermod -u 1000 www-data
USER www-data
WORKDIR /var/www
CMD ["php-fpm"]
EXPOSE 9000
EXPOSE 9000
CMD ["php-fpm"]

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,11 @@
date.timezone=UTC
display_errors=Off
log_errors=On
; Minimums and sensible production defaults for WHMCS
memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 120
date.timezone = UTC
expose_php = Off
memory_limit = 1024M
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time=600
default_socket_timeout=3600
request_terminate_timeout=600
opcache.enable=0
# Disable OPcache, official recommendation from version 8.13 of WHMCS
# Source: https://docs.whmcs.com/8-13/troubleshooting/troubleshoot-php/opcache-warnings/
opcache.enable=0