diff --git a/.github/workflows/build-and-push-docker-images.yml b/.github/workflows/build-and-push-docker-images.yml index bb2e855..79a3777 100644 --- a/.github/workflows/build-and-push-docker-images.yml +++ b/.github/workflows/build-and-push-docker-images.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: ["14", "16", "18", "20"] + node: ["16", "18", "20", "22"] name: node-dev-base ${{ matrix.node }} images steps: - name: Check out the repository @@ -25,7 +25,7 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build nystudio107/node-dev-base:${{ matrix.node }}-alpine + - name: Build nystudio107/node-dev-base:node-${{ matrix.node }}-alpine uses: docker/build-push-action@v2 with: context: node-dev-base/node-${{ matrix.node }}-alpine @@ -40,7 +40,7 @@ jobs: strategy: fail-fast: true matrix: - php: ["7.4", "8.0", "8.1", "8.2"] + php: ["8.0", "8.1", "8.2", "8.3", "8.4"] name: php-dev-base ${{ matrix.php }} images steps: - name: Check out the repository @@ -56,7 +56,7 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build nystudio107/php-prod-base:${{ matrix.php }}-alpine + - name: Build nystudio107/php-prod-base:php-${{ matrix.php }}-alpine uses: docker/build-push-action@v2 with: context: php-prod-base/php-${{ matrix.php }}-alpine @@ -66,7 +66,7 @@ jobs: tags: nystudio107/php-prod-base:${{ matrix.php }}-alpine build-args: | PHP_VERSION=${{ matrix.php }} - - name: Build nystudio107/php-dev-base:${{ matrix.php }}-alpine + - name: Build nystudio107/php-dev-base:php-${{ matrix.php }}-alpine uses: docker/build-push-action@v2 with: context: php-dev-base/php-${{ matrix.php }}-alpine diff --git a/.github/workflows/build-docker-images.yml b/.github/workflows/build-docker-images.yml index 1e33878..7c1c628 100644 --- a/.github/workflows/build-docker-images.yml +++ b/.github/workflows/build-docker-images.yml @@ -10,7 +10,7 @@ jobs: strategy: fail-fast: true matrix: - node: ["14", "16", "18", "20"] + node: ["16", "18", "20", "22"] name: node-dev-base ${{ matrix.node }} images steps: - name: Check out the repository @@ -26,7 +26,7 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build nystudio107/node-dev-base:${{ matrix.node }}-alpine + - name: Build nystudio107/node-dev-base:node-${{ matrix.node }}-alpine uses: docker/build-push-action@v2 with: context: node-dev-base/node-${{ matrix.node }}-alpine @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: true matrix: - php: ["7.4", "8.0", "8.1", "8.2"] + php: ["8.0", "8.1", "8.2", "8.3", "8.4"] name: php-dev-base ${{ matrix.php }} images steps: - name: Check out the repository @@ -57,7 +57,7 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build nystudio107/php-prod-base:${{ matrix.php }}-alpine + - name: Build nystudio107/php-prod-base:php-${{ matrix.php }}-alpine uses: docker/build-push-action@v2 with: context: php-prod-base/php-${{ matrix.php }}-alpine @@ -67,7 +67,7 @@ jobs: tags: nystudio107/php-prod-base:${{ matrix.php }}-alpine build-args: | PHP_VERSION=${{ matrix.php }} - - name: Build nystudio107/php-dev-base:${{ matrix.php }}-alpine + - name: Build nystudio107/php-dev-base:php-${{ matrix.php }}-alpine uses: docker/build-push-action@v2 with: context: php-dev-base/php-${{ matrix.php }}-alpine diff --git a/CHANGELOG.md b/CHANGELOG.md index a116ec3..da963bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # nystudio107/docker-images Change Log +## 1.2.25 - 2025.01.10 +### Added +* Added a `Makefile` for local building of the images +* Add `node-22-alpine` image +* Add `php-prod-base:8.3-alpine` image +* Add `php-dev-base:8.3-alpine` image +* Add `php-prod-base:8.4-alpine` image +* Add `php-dev-base:8.4-alpine` image + +### Changed +* Remove `ENV PHPIZE_DEPS`, and use the environment variable inherited from the parent Alpine images rather than manually setting it ourselves + ## 1.2.24 - 2023.11.26 ### Changed * Removed `libressl` in favor of `openssl` to allow Postgres to work diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..05613be --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +BUILDER_NAME?=craft-builder +BUILD_PLATFORM?=linux/$(shell arch) +BUILD_COMMAND?=docker buildx build --load --platform ${BUILD_PLATFORM} --builder ${BUILDER_NAME} +IMAGE_NAMESPACE?=nystudio107 +PHP_PROD_NAMESPACE?=php-prod-base +PHP_DEV_NAMESPACE?=php-dev-base +NODE_NAMESPACE?=node-dev-base + +PHP_VERSIONS?=php-7.4-alpine php-8.0-alpine php-8.1-alpine php-8.2-alpine php-8.3-alpine php-8.4-alpine +NODE_VERSIONS?=node-14-alpine node-16-alpine node-18-alpine node-20-alpine node-22-alpine + +.PHONY: all create-builder php $(PHP_VERSIONS) node $(NODE_VERSIONS) + +# Build all base images +all: php node + +# Ensure a builder exists for docker buildx +create-builder: + -@if [ ! "$$(docker buildx inspect ${BUILDER_NAME} 2>/dev/null)" ]; then \ + echo "No builder exists, creating builder: ${BUILDER_NAME}" ; \ + docker buildx create --name ${BUILDER_NAME} ; \ + fi + +# Build all php base images +php:$(PHP_VERSIONS) + +# Build specific php prod & dev base images +$(PHP_VERSIONS):create-builder + ${BUILD_COMMAND} -t ${IMAGE_NAMESPACE}/${PHP_PROD_NAMESPACE}:$(subst php-,,$@) ${PHP_PROD_NAMESPACE}/$@ + ${BUILD_COMMAND} -t ${IMAGE_NAMESPACE}/${PHP_DEV_NAMESPACE}:$(subst php-,,$@) ${PHP_DEV_NAMESPACE}/$@ + +# Build all node base images +node:$(NODE_VERSIONS) + +# Build specific node base images +$(NODE_VERSIONS):create-builder + ${BUILD_COMMAND} -t ${IMAGE_NAMESPACE}/${NODE_NAMESPACE}:$(subst node-,,$@) ${NODE_NAMESPACE}/$@ diff --git a/node-dev-base/node-22-alpine/Dockerfile b/node-dev-base/node-22-alpine/Dockerfile new file mode 100644 index 0000000..03dbe0e --- /dev/null +++ b/node-dev-base/node-22-alpine/Dockerfile @@ -0,0 +1,52 @@ +FROM node:22-alpine + +# Install packages for headless chrome +RUN apk update \ + && \ + apk add --no-cache nmap \ + && \ + echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \ + && \ + echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \ + && \ + apk update \ + && \ + apk add --no-cache \ + # Packages needed for npm install of mozjpeg & cwebp, can't --virtual and apk del later + # Pre-builts do not work on alpine for either: + # ref: https://github.com/imagemin/imagemin/issues/168 + # ref: https://github.com/imagemin/cwebp-bin/issues/27 + autoconf \ + automake \ + build-base \ + g++ \ + gcc \ + glu \ + libc6-compat \ + libtool \ + libpng-dev \ + libxxf86vm \ + make \ + nasm \ + # Misc packages + nano \ + # Image optimization packages + gifsicle \ + jpegoptim \ + libpng-dev \ + libwebp-tools \ + libjpeg-turbo-dev \ + libjpeg-turbo-utils \ + optipng \ + pngquant \ + # Headless Chrome packages + chromium \ + harfbuzz \ + "freetype>2.8" \ + ttf-freefont \ + nss + +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser +ENV CHROME_BIN /usr/bin/chromium-browser +ENV LIGHTHOUSE_CHROMIUM_PATH /usr/bin/chromium-browser diff --git a/php-dev-base/php-7.4-alpine/Dockerfile b/php-dev-base/php-7.4-alpine/Dockerfile index 4e2f2f8..d89f956 100755 --- a/php-dev-base/php-7.4-alpine/Dockerfile +++ b/php-dev-base/php-7.4-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:7.4-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # pecl PHP extensions pecl install \ diff --git a/php-dev-base/php-8.0-alpine/Dockerfile b/php-dev-base/php-8.0-alpine/Dockerfile index 57f8623..075c46a 100755 --- a/php-dev-base/php-8.0-alpine/Dockerfile +++ b/php-dev-base/php-8.0-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:8.0-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # pecl PHP extensions pecl install \ diff --git a/php-dev-base/php-8.0-alpine/xdebug.ini b/php-dev-base/php-8.0-alpine/xdebug.ini index 3341bd7..83b9403 100644 --- a/php-dev-base/php-8.0-alpine/xdebug.ini +++ b/php-dev-base/php-8.0-alpine/xdebug.ini @@ -1,4 +1,4 @@ -xdebug.mode=develop,debug,profile +xdebug.mode=develop,debug,profile,coverage xdebug.start_with_request=trigger xdebug.client_host=host.docker.internal xdebug.output_dir = "/var/www/project/cms/storage/logs" diff --git a/php-dev-base/php-8.1-alpine/Dockerfile b/php-dev-base/php-8.1-alpine/Dockerfile index 40f050b..f154fb7 100755 --- a/php-dev-base/php-8.1-alpine/Dockerfile +++ b/php-dev-base/php-8.1-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:8.1-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -15,13 +20,7 @@ ENV PHPIZE_DEPS \ re2c \ libtool \ linux-headers \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + wget \ && \ # pecl PHP extensions pecl install \ diff --git a/php-dev-base/php-8.1-alpine/xdebug.ini b/php-dev-base/php-8.1-alpine/xdebug.ini index 3341bd7..83b9403 100644 --- a/php-dev-base/php-8.1-alpine/xdebug.ini +++ b/php-dev-base/php-8.1-alpine/xdebug.ini @@ -1,4 +1,4 @@ -xdebug.mode=develop,debug,profile +xdebug.mode=develop,debug,profile,coverage xdebug.start_with_request=trigger xdebug.client_host=host.docker.internal xdebug.output_dir = "/var/www/project/cms/storage/logs" diff --git a/php-dev-base/php-8.2-alpine/Dockerfile b/php-dev-base/php-8.2-alpine/Dockerfile index 34893ae..a34d53e 100755 --- a/php-dev-base/php-8.2-alpine/Dockerfile +++ b/php-dev-base/php-8.2-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:8.2-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -15,13 +20,7 @@ ENV PHPIZE_DEPS \ re2c \ libtool \ linux-headers \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + wget \ && \ # pecl PHP extensions pecl install \ diff --git a/php-dev-base/php-8.2-alpine/xdebug.ini b/php-dev-base/php-8.2-alpine/xdebug.ini index 3341bd7..83b9403 100644 --- a/php-dev-base/php-8.2-alpine/xdebug.ini +++ b/php-dev-base/php-8.2-alpine/xdebug.ini @@ -1,4 +1,4 @@ -xdebug.mode=develop,debug,profile +xdebug.mode=develop,debug,profile,coverage xdebug.start_with_request=trigger xdebug.client_host=host.docker.internal xdebug.output_dir = "/var/www/project/cms/storage/logs" diff --git a/php-dev-base/php-8.3-alpine/Dockerfile b/php-dev-base/php-8.3-alpine/Dockerfile new file mode 100755 index 0000000..5d5794b --- /dev/null +++ b/php-dev-base/php-8.3-alpine/Dockerfile @@ -0,0 +1,46 @@ +FROM nystudio107/php-prod-base:8.3-alpine + +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps + autoconf \ + dpkg-dev \ + dpkg \ + file \ + g++ \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libtool \ + linux-headers \ + wget \ + && \ + # pecl PHP extensions + pecl install \ + xdebug \ + && \ + # Enable PHP extensions + docker-php-ext-enable \ + xdebug \ + && \ + # Remove the build deps + apk del .build-deps \ + && \ + # Clean out directories that don't need to be part of the image + rm -rf /tmp/* /var/tmp/* + +# Copy the `xdebug.ini` file into place for xdebug +COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini + +# Copy the `zzz-docker-php.ini` file into place for php +COPY zzz-docker-php.ini /usr/local/etc/php/conf.d/ + +# Copy the `zzz-docker-php-fpm.conf` file into place for php-fpm +COPY zzz-docker-php-fpm.conf /usr/local/etc/php-fpm.d/ diff --git a/php-dev-base/php-8.3-alpine/xdebug.ini b/php-dev-base/php-8.3-alpine/xdebug.ini new file mode 100644 index 0000000..83b9403 --- /dev/null +++ b/php-dev-base/php-8.3-alpine/xdebug.ini @@ -0,0 +1,4 @@ +xdebug.mode=develop,debug,profile,coverage +xdebug.start_with_request=trigger +xdebug.client_host=host.docker.internal +xdebug.output_dir = "/var/www/project/cms/storage/logs" diff --git a/php-dev-base/php-8.3-alpine/zzz-docker-php-fpm.conf b/php-dev-base/php-8.3-alpine/zzz-docker-php-fpm.conf new file mode 100755 index 0000000..b01e39a --- /dev/null +++ b/php-dev-base/php-8.3-alpine/zzz-docker-php-fpm.conf @@ -0,0 +1,4 @@ +[www] +pm.max_children = 5 +pm.process_idle_timeout = 30s +pm.max_requests = 1000 diff --git a/php-dev-base/php-8.3-alpine/zzz-docker-php.ini b/php-dev-base/php-8.3-alpine/zzz-docker-php.ini new file mode 100644 index 0000000..5475fae --- /dev/null +++ b/php-dev-base/php-8.3-alpine/zzz-docker-php.ini @@ -0,0 +1,9 @@ +[php] +memory_limit=256M +max_execution_time=300 +max_input_time=300 +max_input_vars=5000 +upload_max_filesize=100M +post_max_size=100M +[opcache] +opcache.enable=0 diff --git a/php-dev-base/php-8.4-alpine/Dockerfile b/php-dev-base/php-8.4-alpine/Dockerfile new file mode 100755 index 0000000..b23345a --- /dev/null +++ b/php-dev-base/php-8.4-alpine/Dockerfile @@ -0,0 +1,46 @@ +FROM nystudio107/php-prod-base:8.4-alpine + +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps + autoconf \ + dpkg-dev \ + dpkg \ + file \ + g++ \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libtool \ + linux-headers \ + wget \ + && \ + # pecl PHP extensions + pecl install \ + xdebug \ + && \ + # Enable PHP extensions + docker-php-ext-enable \ + xdebug \ + && \ + # Remove the build deps + apk del .build-deps \ + && \ + # Clean out directories that don't need to be part of the image + rm -rf /tmp/* /var/tmp/* + +# Copy the `xdebug.ini` file into place for xdebug +COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini + +# Copy the `zzz-docker-php.ini` file into place for php +COPY zzz-docker-php.ini /usr/local/etc/php/conf.d/ + +# Copy the `zzz-docker-php-fpm.conf` file into place for php-fpm +COPY zzz-docker-php-fpm.conf /usr/local/etc/php-fpm.d/ diff --git a/php-dev-base/php-8.4-alpine/xdebug.ini b/php-dev-base/php-8.4-alpine/xdebug.ini new file mode 100644 index 0000000..83b9403 --- /dev/null +++ b/php-dev-base/php-8.4-alpine/xdebug.ini @@ -0,0 +1,4 @@ +xdebug.mode=develop,debug,profile,coverage +xdebug.start_with_request=trigger +xdebug.client_host=host.docker.internal +xdebug.output_dir = "/var/www/project/cms/storage/logs" diff --git a/php-dev-base/php-8.4-alpine/zzz-docker-php-fpm.conf b/php-dev-base/php-8.4-alpine/zzz-docker-php-fpm.conf new file mode 100755 index 0000000..b01e39a --- /dev/null +++ b/php-dev-base/php-8.4-alpine/zzz-docker-php-fpm.conf @@ -0,0 +1,4 @@ +[www] +pm.max_children = 5 +pm.process_idle_timeout = 30s +pm.max_requests = 1000 diff --git a/php-dev-base/php-8.4-alpine/zzz-docker-php.ini b/php-dev-base/php-8.4-alpine/zzz-docker-php.ini new file mode 100644 index 0000000..5475fae --- /dev/null +++ b/php-dev-base/php-8.4-alpine/zzz-docker-php.ini @@ -0,0 +1,9 @@ +[php] +memory_limit=256M +max_execution_time=300 +max_input_time=300 +max_input_vars=5000 +upload_max_filesize=100M +post_max_size=100M +[opcache] +opcache.enable=0 diff --git a/php-dev-craft/php-7.4-alpine/mariadb/Dockerfile b/php-dev-craft/php-7.4-alpine/mariadb/Dockerfile index bba7f96..5e54f04 100755 --- a/php-dev-craft/php-7.4-alpine/mariadb/Dockerfile +++ b/php-dev-craft/php-7.4-alpine/mariadb/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-dev-base:7.4-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-dev-craft/php-7.4-alpine/postgres/Dockerfile b/php-dev-craft/php-7.4-alpine/postgres/Dockerfile index 1be90c9..e233201 100755 --- a/php-dev-craft/php-7.4-alpine/postgres/Dockerfile +++ b/php-dev-craft/php-7.4-alpine/postgres/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-dev-base:7.4-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-dev-craft/php-8.0-alpine/mariadb/Dockerfile b/php-dev-craft/php-8.0-alpine/mariadb/Dockerfile index a632557..dc74322 100755 --- a/php-dev-craft/php-8.0-alpine/mariadb/Dockerfile +++ b/php-dev-craft/php-8.0-alpine/mariadb/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-dev-base:8.0-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-dev-craft/php-8.0-alpine/postgres/Dockerfile b/php-dev-craft/php-8.0-alpine/postgres/Dockerfile index 9916f71..1b11b1a 100755 --- a/php-dev-craft/php-8.0-alpine/postgres/Dockerfile +++ b/php-dev-craft/php-8.0-alpine/postgres/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-dev-base:8.0-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-base/php-7.4-alpine/Dockerfile b/php-prod-base/php-7.4-alpine/Dockerfile index b36a1bd..d4be07a 100755 --- a/php-prod-base/php-7.4-alpine/Dockerfile +++ b/php-prod-base/php-7.4-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM php:7.4-fpm-alpine3.13 -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,17 +18,12 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ - $PHPIZE_DEPS \ bzip2-dev \ ca-certificates \ curl \ diff --git a/php-prod-base/php-8.0-alpine/Dockerfile b/php-prod-base/php-8.0-alpine/Dockerfile index 1299ad0..e9ff2e1 100755 --- a/php-prod-base/php-8.0-alpine/Dockerfile +++ b/php-prod-base/php-8.0-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM php:8.0-fpm-alpine3.13 -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-base/php-8.1-alpine/Dockerfile b/php-prod-base/php-8.1-alpine/Dockerfile index 80e9b89..bd53a47 100755 --- a/php-prod-base/php-8.1-alpine/Dockerfile +++ b/php-prod-base/php-8.1-alpine/Dockerfile @@ -1,8 +1,13 @@ FROM php:8.1-fpm-alpine3.17 -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,16 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - zlib-dev \ libtool \ linux-headers \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-base/php-8.2-alpine/Dockerfile b/php-prod-base/php-8.2-alpine/Dockerfile index 612deba..406f2d0 100755 --- a/php-prod-base/php-8.2-alpine/Dockerfile +++ b/php-prod-base/php-8.2-alpine/Dockerfile @@ -1,8 +1,13 @@ -FROM php:8.2-fpm-alpine3.18 +FROM php:8.2-fpm-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,16 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - zlib-dev \ libtool \ linux-headers \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-base/php-8.3-alpine/Dockerfile b/php-prod-base/php-8.3-alpine/Dockerfile new file mode 100755 index 0000000..ac9e0e4 --- /dev/null +++ b/php-prod-base/php-8.3-alpine/Dockerfile @@ -0,0 +1,95 @@ +FROM php:8.3-fpm-alpine + +ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ + +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps + autoconf \ + dpkg-dev \ + dpkg \ + file \ + g++ \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libtool \ + linux-headers \ + wget \ + && \ + # Packages to install + apk add --no-cache \ + bzip2-dev \ + ca-certificates \ + curl \ + fcgi \ + freetype-dev \ + gettext-dev \ + icu-dev \ + icu-data-full \ + imagemagick-dev \ + jpeg-dev \ + libpng-dev \ + libwebp-dev \ + libzip-dev \ + libtool \ + libxml2-dev \ + libzip-dev \ + oniguruma-dev \ + openssl-dev \ + unzip \ + && \ + # pecl PHP extensions + pecl install \ + redis \ + && \ + # Configure PHP extensions + docker-php-ext-configure \ + # ref: https://github.com/docker-library/php/issues/920#issuecomment-562864296 + gd --enable-gd --with-freetype --with-jpeg --with-webp \ + && \ + install-php-extensions \ + gmagick \ + && \ + # Install PHP extensions + docker-php-ext-install -j$(nproc) \ + bcmath \ + bz2 \ + exif \ + ftp \ + gettext \ + gd \ + intl \ + mbstring \ + opcache \ + pdo \ + shmop \ + sockets \ + sysvmsg \ + sysvsem \ + sysvshm \ + zip \ + && \ + # Enable PHP extensions + docker-php-ext-enable \ + gmagick \ + redis \ + && \ + # Remove the build deps + apk del .build-deps \ + && \ + # Clean out directories that don't need to be part of the image + rm -rf /tmp/* /var/tmp/* + +# Copy the `zzz-docker-php.ini` file into place for php +COPY zzz-docker-php.ini /usr/local/etc/php/conf.d/ + +# Copy the `zzz-docker-php-fpm.conf` file into place for php-fpm +COPY zzz-docker-php-fpm.conf /usr/local/etc/php-fpm.d/ diff --git a/php-prod-base/php-8.3-alpine/zzz-docker-php-fpm.conf b/php-prod-base/php-8.3-alpine/zzz-docker-php-fpm.conf new file mode 100755 index 0000000..657bd7b --- /dev/null +++ b/php-prod-base/php-8.3-alpine/zzz-docker-php-fpm.conf @@ -0,0 +1,4 @@ +[www] +pm.max_children = 10 +pm.process_idle_timeout = 30s +pm.max_requests = 1000 diff --git a/php-prod-base/php-8.3-alpine/zzz-docker-php.ini b/php-prod-base/php-8.3-alpine/zzz-docker-php.ini new file mode 100644 index 0000000..6c9eef3 --- /dev/null +++ b/php-prod-base/php-8.3-alpine/zzz-docker-php.ini @@ -0,0 +1,13 @@ +[php] +memory_limit=256M +max_execution_time=300 +max_input_time=300 +max_input_vars=5000 +upload_max_filesize=100M +post_max_size=100M +[opcache] +opcache.enable=1 +opcache.revalidate_freq=0 +opcache.validate_timestamps=1 +opcache.jit_buffer_size=100M +opcache.jit=tracing diff --git a/php-prod-base/php-8.4-alpine/Dockerfile b/php-prod-base/php-8.4-alpine/Dockerfile new file mode 100755 index 0000000..73dff89 --- /dev/null +++ b/php-prod-base/php-8.4-alpine/Dockerfile @@ -0,0 +1,95 @@ +FROM php:8.4-alpine + +ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ + +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps + autoconf \ + dpkg-dev \ + dpkg \ + file \ + g++ \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libtool \ + linux-headers \ + wget \ + && \ + # Packages to install + apk add --no-cache \ + bzip2-dev \ + ca-certificates \ + curl \ + fcgi \ + freetype-dev \ + gettext-dev \ + icu-dev \ + icu-data-full \ + imagemagick-dev \ + jpeg-dev \ + libpng-dev \ + libwebp-dev \ + libzip-dev \ + libtool \ + libxml2-dev \ + libzip-dev \ + oniguruma-dev \ + openssl-dev \ + unzip \ + && \ + # pecl PHP extensions + pecl install \ + redis \ + && \ + # Configure PHP extensions + docker-php-ext-configure \ + # ref: https://github.com/docker-library/php/issues/920#issuecomment-562864296 + gd --enable-gd --with-freetype --with-jpeg --with-webp \ + && \ + install-php-extensions \ + gmagick \ + && \ + # Install PHP extensions + docker-php-ext-install -j$(nproc) \ + bcmath \ + bz2 \ + exif \ + ftp \ + gettext \ + gd \ + intl \ + mbstring \ + opcache \ + pdo \ + shmop \ + sockets \ + sysvmsg \ + sysvsem \ + sysvshm \ + zip \ + && \ + # Enable PHP extensions + docker-php-ext-enable \ + gmagick \ + redis \ + && \ + # Remove the build deps + apk del .build-deps \ + && \ + # Clean out directories that don't need to be part of the image + rm -rf /tmp/* /var/tmp/* + +# Copy the `zzz-docker-php.ini` file into place for php +COPY zzz-docker-php.ini /usr/local/etc/php/conf.d/ + +# Copy the `zzz-docker-php-fpm.conf` file into place for php-fpm +COPY zzz-docker-php-fpm.conf /usr/local/etc/php-fpm.d/ diff --git a/php-prod-base/php-8.4-alpine/zzz-docker-php-fpm.conf b/php-prod-base/php-8.4-alpine/zzz-docker-php-fpm.conf new file mode 100755 index 0000000..657bd7b --- /dev/null +++ b/php-prod-base/php-8.4-alpine/zzz-docker-php-fpm.conf @@ -0,0 +1,4 @@ +[www] +pm.max_children = 10 +pm.process_idle_timeout = 30s +pm.max_requests = 1000 diff --git a/php-prod-base/php-8.4-alpine/zzz-docker-php.ini b/php-prod-base/php-8.4-alpine/zzz-docker-php.ini new file mode 100644 index 0000000..6c9eef3 --- /dev/null +++ b/php-prod-base/php-8.4-alpine/zzz-docker-php.ini @@ -0,0 +1,13 @@ +[php] +memory_limit=256M +max_execution_time=300 +max_input_time=300 +max_input_vars=5000 +upload_max_filesize=100M +post_max_size=100M +[opcache] +opcache.enable=1 +opcache.revalidate_freq=0 +opcache.validate_timestamps=1 +opcache.jit_buffer_size=100M +opcache.jit=tracing diff --git a/php-prod-craft/php-7.4-alpine/mariadb/Dockerfile b/php-prod-craft/php-7.4-alpine/mariadb/Dockerfile index 298939e..9702777 100755 --- a/php-prod-craft/php-7.4-alpine/mariadb/Dockerfile +++ b/php-prod-craft/php-7.4-alpine/mariadb/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:7.4-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-craft/php-7.4-alpine/postgres/Dockerfile b/php-prod-craft/php-7.4-alpine/postgres/Dockerfile index 4174667..34ed804 100755 --- a/php-prod-craft/php-7.4-alpine/postgres/Dockerfile +++ b/php-prod-craft/php-7.4-alpine/postgres/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:7.4-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-craft/php-8.0-alpine/mariadb/Dockerfile b/php-prod-craft/php-8.0-alpine/mariadb/Dockerfile index 69462fc..6a83d65 100755 --- a/php-prod-craft/php-8.0-alpine/mariadb/Dockerfile +++ b/php-prod-craft/php-8.0-alpine/mariadb/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:8.0-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \ diff --git a/php-prod-craft/php-8.0-alpine/postgres/Dockerfile b/php-prod-craft/php-8.0-alpine/postgres/Dockerfile index 83e101a..fd697f8 100755 --- a/php-prod-craft/php-8.0-alpine/postgres/Dockerfile +++ b/php-prod-craft/php-8.0-alpine/postgres/Dockerfile @@ -1,8 +1,13 @@ FROM nystudio107/php-prod-base:8.0-alpine -# dependencies required for running "phpize" -# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) -ENV PHPIZE_DEPS \ +# Install packages +RUN set -eux; \ + # Packages needed only for build + apk add --no-cache --virtual .build-deps \ + # Dependencies required for running "phpize"; the $PHPIZE_DEPS env var is inherited from the parent image + # These get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) + $PHPIZE_DEPS \ + # Build deps autoconf \ dpkg-dev \ dpkg \ @@ -13,13 +18,9 @@ ENV PHPIZE_DEPS \ make \ pkgconf \ re2c \ - wget - -# Install packages -RUN set -eux; \ - # Packages needed only for build - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + libtool \ + linux-headers \ + wget \ && \ # Packages to install apk add --no-cache \