FROM php:8.2-apache COPY ./dev-apache2.conf /etc/apache2/apache2.conf COPY ./dev-ports.conf /etc/apache2/ports.conf # Ensure packages are available. RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive \ apt install -fqy \ libonig-dev \ libcurl4-openssl-dev \ libxml2-dev \ libxslt1-dev \ libzip-dev \ libjson-c-dev \ libldap-dev \ libargon2-dev \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ libpq-dev \ apt-utils \ vim \ curl \ sqlite3 \ openssl \ default-mysql-client \ iputils-ping \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # xdebug (coverage) + redis (cache) are optional for the test/dev image — the test env runs on # file cache/session (see .dev/test.env). Don't let an intermittent pecl.php.net outage # ("No releases available for ...") fail the whole image build and block all CI. RUN pecl install xdebug redis || echo "pecl unavailable — building without xdebug/redis" RUN docker-php-ext-configure gd --enable-gd --with-jpeg=/usr/include/ --with-freetype --with-jpeg RUN docker-php-ext-install \ gd \ mysqli \ pdo_mysql \ pdo_pgsql \ mbstring \ exif \ pcntl \ pdo \ bcmath \ opcache \ ldap \ zip # zip is always installed above; xdebug/redis only if pecl was reachable. Enable each one # independently and best-effort, so a missing extension (partial pecl outage) doesn't prevent # enabling the one that IS present. RUN docker-php-ext-enable zip \ && (docker-php-ext-enable xdebug || echo "xdebug not installed, skipping enable") \ && (docker-php-ext-enable redis || echo "redis not installed, skipping enable") COPY ./dev-apache-site.conf /etc/apache2/sites-enabled/000-default.conf RUN openssl req -x509 -newkey rsa:4096 -keyout /etc/ssl/private/key.pem -out /etc/ssl/certs/cert.pem -days 365 -nodes -subj "/C=US/ST=NY/L=NY/O=ACME/OU=CD/CN=AcmeWPDeveloper" RUN a2enmod ssl RUN a2enmod rewrite VOLUME /var/www/uploads RUN mkdir -p /var/www/uploads \ && chown -R www-data:www-data /var/www/uploads