Skip to content

Commit 7fc78d9

Browse files
committed
Add a bunch of extra packages that proved useful over years of dev to the base image.
1 parent 8785dbd commit 7fc78d9

1 file changed

Lines changed: 72 additions & 8 deletions

File tree

Dockerfile

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,78 @@
1-
FROM wordpress:latest
1+
ARG PHP_VERSION=latest
22

3-
ENV XDEBUG_PORT 9000
3+
FROM wordpress:${PHP_VERSION}
44

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
550
RUN yes | pecl install xdebug && \
651
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
1376

1477
EXPOSE 9000
78+
EXPOSE 9003

0 commit comments

Comments
 (0)