|
1 | | -FROM wordpress:latest |
| 1 | +ARG PHP_VERSION=latest |
2 | 2 |
|
3 | | -ENV XDEBUG_PORT 9000 |
| 3 | +FROM wordpress:${PHP_VERSION} |
4 | 4 |
|
| 5 | +ENV XDEBUG_PORT_V2=9000 |
| 6 | +ENV XDEBUG_PORT_V3=9003 |
| 7 | +ARG PHP_MAJOR_VERSION=8 |
| 8 | + |
| 9 | +# Install some nice to have dependencies for PHP extensions and developer tools |
| 10 | +RUN apt-get update && apt-get install -y \ |
| 11 | + libicu-dev \ |
| 12 | + libzip-dev \ |
| 13 | + zlib1g-dev \ |
| 14 | + libpng-dev \ |
| 15 | + libjpeg-dev \ |
| 16 | + libfreetype6-dev \ |
| 17 | + libxml2-dev \ |
| 18 | + libssl-dev \ |
| 19 | + libonig-dev \ |
| 20 | + vim \ |
| 21 | + nano \ |
| 22 | + git \ |
| 23 | + unzip \ |
| 24 | + mariadb-client \ |
| 25 | + msmtp \ |
| 26 | + && apt-get clean \ |
| 27 | + && rm -rf /var/lib/apt/lists/* |
| 28 | + |
| 29 | +# Install PHP extensions commonly used in WordPress development |
| 30 | +RUN docker-php-ext-configure gd --with-freetype --with-jpeg \ |
| 31 | + && docker-php-ext-install -j$(nproc) \ |
| 32 | + intl \ |
| 33 | + mysqli \ |
| 34 | + pdo_mysql \ |
| 35 | + zip \ |
| 36 | + gd \ |
| 37 | + soap \ |
| 38 | + bcmath \ |
| 39 | + exif \ |
| 40 | + opcache \ |
| 41 | + && pecl install redis \ |
| 42 | + && docker-php-ext-enable redis |
| 43 | + |
| 44 | +# Install WP-CLI |
| 45 | +RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ |
| 46 | + && chmod +x wp-cli.phar \ |
| 47 | + && mv wp-cli.phar /usr/local/bin/wp |
| 48 | + |
| 49 | +# Install and configure Xdebug |
5 | 50 | RUN yes | pecl install xdebug && \ |
6 | 51 | echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini && \ |
7 | | - echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
8 | | - echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
9 | | - echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
10 | | - echo "xdebug.remote_mode=req" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
11 | | - echo "xdebug.remote_autostart=false" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
12 | | - echo "198.143.164.251 api.wordpress.org" >> /etc/hosts |
| 52 | + if php -v | grep -q "PHP 7"; then \ |
| 53 | + # Xdebug 2.x configuration for PHP 7 |
| 54 | + echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 55 | + echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 56 | + echo "xdebug.remote_port=${XDEBUG_PORT_V2}" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 57 | + echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 58 | + echo "xdebug.remote_mode=req" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 59 | + echo "xdebug.remote_autostart=false" >> /usr/local/etc/php/conf.d/xdebug.ini; \ |
| 60 | + else \ |
| 61 | + # Xdebug 3.x configuration for PHP 8+ |
| 62 | + echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 63 | + echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 64 | + echo "xdebug.client_port=${XDEBUG_PORT_V3}" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 65 | + echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 66 | + echo "xdebug.discover_client_host=true" >> /usr/local/etc/php/conf.d/xdebug.ini; \ |
| 67 | + fi |
| 68 | + |
| 69 | +# Configure php.ini settings for WordPress development |
| 70 | +RUN { \ |
| 71 | + echo 'upload_max_filesize = 64M'; \ |
| 72 | + echo 'post_max_size = 64M'; \ |
| 73 | + echo 'memory_limit = 256M'; \ |
| 74 | + echo 'max_execution_time = 300'; \ |
| 75 | + } > /usr/local/etc/php/conf.d/wordpress-recommended.ini |
13 | 76 |
|
14 | 77 | EXPOSE 9000 |
| 78 | +EXPOSE 9003 |
0 commit comments