diff --git a/.github/workflows/php-85.yml b/.github/workflows/php-85.yml new file mode 100644 index 0000000..f975540 --- /dev/null +++ b/.github/workflows/php-85.yml @@ -0,0 +1,56 @@ +name: PHP 8.5 + +on: + workflow_dispatch: + push: + branches: [ main, php-8.5 ] + paths: + - 8.5/** + release: + types: [ published ] + +jobs: + push_to_registry: + strategy: + matrix: + image: + - name: "[8.5][base]" + target: "base" + context: 8.5 + tags: | + jopplt/php:8.5-fpm-base + platforms: linux/amd64,linux/arm64 + - name: "[8.5][dev]" + target: "dev" + context: 8.5 + tags: | + jopplt/php:8.5-fpm-dev + platforms: linux/amd64,linux/arm64 + fail-fast: true + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v6 + - name: Set up QEMU + uses: docker/setup-qemu-action@master + with: + platforms: all + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@master + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: "${{ matrix.image.name }}" + uses: docker/build-push-action@v6 + with: + builder: ${{ steps.buildx.outputs.name }} + context: ${{ matrix.image.context }} + target: ${{ matrix.image.target }} + platforms: ${{ matrix.image.platforms }} + push: true + tags: ${{ matrix.image.tags }} + build-args: ${{ matrix.image.build-args }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/8.5/Dockerfile b/8.5/Dockerfile new file mode 100644 index 0000000..85fa259 --- /dev/null +++ b/8.5/Dockerfile @@ -0,0 +1,58 @@ +FROM php:8.5.0-alpine3.22 AS base +WORKDIR /app +VOLUME /app +COPY config/php.ini /usr/local/etc/php/php.ini +RUN apk --update add --no-cache --virtual .build-deps \ + build-base \ + autoconf \ + # Base packages + && apk --update add --no-cache \ + curl \ + git \ + bash \ + supervisor \ + freetype-dev libpng-dev libjpeg-turbo-dev \ + icu-dev \ + libzip-dev zip unzip \ + oniguruma-dev \ + libxml2-dev \ + # Additional extensions + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) \ + exif \ + gd \ + intl \ + bcmath \ + mbstring \ + mysqli \ + pdo \ + pdo_mysql \ + pcntl \ + zip \ + && pecl install -o -f \ + redis \ + apcu \ + && docker-php-ext-enable \ + redis \ + apcu \ + && pecl clear-cache \ + # Cleanup + && apk del .build-deps + +FROM base AS dev +COPY config/xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini +RUN apk --update add --no-cache --virtual .build-deps \ + # Build dependencies + build-base \ + gcc \ + autoconf \ + linux-headers \ + && apk --update add --no-cache \ + # Dev packages + php83-pecl-xdebug \ + sqlite \ + mysql-client \ + && pecl install \ + xdebug-3.5.0 \ + # Cleanup + && apk del .build-deps \ No newline at end of file diff --git a/8.5/config/php.ini b/8.5/config/php.ini new file mode 100644 index 0000000..ced703b --- /dev/null +++ b/8.5/config/php.ini @@ -0,0 +1,4 @@ +opcache.memory_consumption=256 +opcache.max_accelerated_files = 20000 +realpath_cache_size = 4096K +realpath_cache_ttl = 600 \ No newline at end of file diff --git a/8.5/config/xdebug.ini b/8.5/config/xdebug.ini new file mode 100644 index 0000000..a4b0f56 --- /dev/null +++ b/8.5/config/xdebug.ini @@ -0,0 +1,4 @@ +zend_extension=xdebug.so +xdebug.mode=debug +xdebug.start_with_request=yes +xdebug.client_host=host.docker.internal \ No newline at end of file diff --git a/README.md b/README.md index 71e29c5..ba2c76a 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ PHP docker image for php/mysql developers. Link to DockerHub: https://hub.docker.com/r/jopplt/php/tags ## Tags -### `8.4-fpm-base`: Base image for PHP development +### `8.5-fpm-base`: Base image for PHP development ``` -docker pull jopplt/php:8.4-fpm-base +docker pull jopplt/php:8.5-fpm-base ``` Includes the following extensions: @@ -25,17 +25,17 @@ Includes the following extensions: Get a shell: ``` -docker run --rm -it -v ${PWD}:/app jopplt/php:8.4-fpm-base sh +docker run --rm -it -v ${PWD}:/app jopplt/php:8.5-fpm-base sh ``` Custom `php.ini` configuration?: ``` -docker run --rm -it -v ${PWD}:/app -v ${PWD}/config/php.ini:/usr/local/etc/php/php.ini jopplt/php:8.4-fpm-base sh +docker run --rm -it -v ${PWD}:/app -v ${PWD}/config/php.ini:/usr/local/etc/php/php.ini jopplt/php:8.5-fpm-base sh ``` -### `8.4-fpm-dev`: Base image with additional tools for local development +### `8.5-fpm-dev`: Base image with additional tools for local development ``` -docker pull jopplt/php:8.4-fpm-dev +docker pull jopplt/php:8.5-fpm-dev ``` Bundled with: * Xdebug @@ -44,24 +44,24 @@ Bundled with: Get a shell: ``` -docker run --rm -it -v ${PWD}:/app jopplt/php:8.4-fpm-dev bash +docker run --rm -it -v ${PWD}:/app jopplt/php:8.5-fpm-dev bash ``` Install composer dependencies on current folder (with ssh keys): ``` -docker run --rm -v ${PWD}:/app -v ~/.ssh:/root/.ssh jopplt/php:8.4-fpm-dev composer install +docker run --rm -v ${PWD}:/app -v ~/.ssh:/root/.ssh jopplt/php:8.5-fpm-dev composer install ``` Custom `xdebug.ini` configuration?: ``` -docker run --rm -it -v ${PWD}:/app -v ${PWD}/config/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini jopplt/php:8.4-fpm-dev bash +docker run --rm -it -v ${PWD}:/app -v ${PWD}/config/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini jopplt/php:8.5-fpm-dev bash ``` ## Local build & run ``` -docker build --tag php:8.4-fpm-dev 8.4 +docker build --tag php:8.5-fpm-dev 8.5 ``` ``` -docker run --rm -it -v ${PWD}:/app php:8.4-fpm-dev bash +docker run --rm -it -v ${PWD}:/app php:8.5-fpm-dev bash ```