From 5c99b0f4f3e0017e3a799fde7142d22947e57598 Mon Sep 17 00:00:00 2001 From: Zankaria Date: Fri, 12 Apr 2024 17:10:19 +0200 Subject: [PATCH] docker: enable profiling with xdebug --- docker-compose.yml | 3 ++- docker/php/Dockerfile.profile | 16 ++++++++++++++++ docker/php/bootstrap.sh | 8 ++++++++ docker/php/xdebug-prof.ini | 7 +++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 docker/php/Dockerfile.profile create mode 100644 docker/php/xdebug-prof.ini diff --git a/docker-compose.yml b/docker-compose.yml index 240d0e88..47ab8d7b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,11 +21,12 @@ services: php: build: context: . - dockerfile: ./docker/php/Dockerfile + dockerfile: ./docker/php/Dockerfile.profile volumes: - ./local-www:/var/www - ./docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf - ./docker/php/jit.ini:/usr/local/etc/php/conf.d/jit.ini + - ./docker/php/xdebug-prof.ini:/usr/local/etc/php/conf.d/xdebug-prof.ini networks: vichan_net: ipv4_address: 172.20.0.4 diff --git a/docker/php/Dockerfile.profile b/docker/php/Dockerfile.profile new file mode 100644 index 00000000..ad2019ab --- /dev/null +++ b/docker/php/Dockerfile.profile @@ -0,0 +1,16 @@ +# syntax = devthefuture/dockerfile-x +INCLUDE ./docker/php/Dockerfile + +RUN apk add --no-cache \ + linux-headers \ + $PHPIZE_DEPS \ + && pecl update-channels \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + && apk del \ + linux-headers \ + $PHPIZE_DEPS \ + && rm -rf /var/cache/* + +ENV XDEBUG_OUT_DIR=/var/www/xdebug_out +CMD [ "bootstrap.sh" ] \ No newline at end of file diff --git a/docker/php/bootstrap.sh b/docker/php/bootstrap.sh index 6d6b5c15..4ee088ba 100755 --- a/docker/php/bootstrap.sh +++ b/docker/php/bootstrap.sh @@ -24,6 +24,14 @@ if [ ! -w /var/www ] ; then exit 1 fi +if [ -z "$XDEBUG_OUT_DIR" ] ; then + echo "INFO: Initializing xdebug out directory at $XDEBUG_OUT_DIR" + mkdir -p "$XDEBUG_OUT_DIR" + chown www-data "$XDEBUG_OUT_DIR" + chgrp www-data "$XDEBUG_OUT_DIR" + chmod 755 "$XDEBUG_OUT_DIR" +fi + # Link the entrypoints from the exposed directory. ln -nfs \ /code/tools/ \ diff --git a/docker/php/xdebug-prof.ini b/docker/php/xdebug-prof.ini new file mode 100644 index 00000000..c6dc008e --- /dev/null +++ b/docker/php/xdebug-prof.ini @@ -0,0 +1,7 @@ +zend_extension=xdebug + +[xdebug] +xdebug.mode = profile +xdebug.start_with_request = start +error_reporting = E_ALL +xdebug.output_dir = /var/www/xdebug_out