diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..5e3d9ca --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +--- +github: [cytopia] +patreon: devilbox diff --git a/.github/workflows/params.yml b/.github/workflows/params.yml index 5e89f8f..7852dcf 100644 --- a/.github/workflows/params.yml +++ b/.github/workflows/params.yml @@ -53,7 +53,7 @@ jobs: with: repository_default_branch: master branches: master - num_latest_tags: 1 + num_latest_tags: 0 if: github.event_name == 'schedule' - name: "[DEBUG] Show settings'" diff --git a/Dockerfile b/Dockerfiles/Dockerfile similarity index 100% rename from Dockerfile rename to Dockerfiles/Dockerfile diff --git a/data/docker-php-entrypoint b/Dockerfiles/data/docker-php-entrypoint similarity index 100% rename from data/docker-php-entrypoint rename to Dockerfiles/data/docker-php-entrypoint diff --git a/data/docker-php-ext-configure b/Dockerfiles/data/docker-php-ext-configure similarity index 100% rename from data/docker-php-ext-configure rename to Dockerfiles/data/docker-php-ext-configure diff --git a/data/docker-php-ext-enable b/Dockerfiles/data/docker-php-ext-enable similarity index 100% rename from data/docker-php-ext-enable rename to Dockerfiles/data/docker-php-ext-enable diff --git a/data/docker-php-ext-install b/Dockerfiles/data/docker-php-ext-install similarity index 100% rename from data/docker-php-ext-install rename to Dockerfiles/data/docker-php-ext-install diff --git a/data/docker-php-source b/Dockerfiles/data/docker-php-source similarity index 100% rename from data/docker-php-source rename to Dockerfiles/data/docker-php-source diff --git a/data/php.ini b/Dockerfiles/data/php.ini similarity index 100% rename from data/php.ini rename to Dockerfiles/data/php.ini diff --git a/Makefile b/Makefile index 867757d..6200cad 100644 --- a/Makefile +++ b/Makefile @@ -27,13 +27,13 @@ TAG = latest NAME = PHP VERSION = 8.3 IMAGE = devilbox/php-fpm-$(VERSION) -DIR = . +DIR = Dockerfiles FILE = Dockerfile DOCKER_TAG = $(TAG) ARCH = linux/amd64 # Makefile.lint overwrites -FL_IGNORES = .git/,.github/,tests/,data/ +FL_IGNORES = .git/,.github/,tests/,Dockerfiles/data/ SC_IGNORES = .git/,.github/,tests/ @@ -92,7 +92,7 @@ _test-integration: .PHONY: update-readme update-readme: cat "./README.md" \ - | perl -0 -pe "s/.*/\n$$(./tests/get-modules.sh $(IMAGE) $(NAME) $(VERSION) $(DOCKER_TAG) $(ARCH))\n/s" \ + | perl -0 -pe "s#.*#\n$$(./tests/get-modules.sh $(IMAGE) $(NAME) $(VERSION) $(DOCKER_TAG) $(ARCH))\n#s" \ > "./README.md.tmp" yes | mv -f "./README.md.tmp" "./README.md" git diff --quiet || { echo "Build Changes"; git diff; git status; false; } diff --git a/README.md b/README.md index f4dffc5..f53a685 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # PHP-FPM 8.3 [![Tag](https://img.shields.io/github/tag/devilbox/docker-php-fpm-8.3.svg)](https://github.com/devilbox/docker-php-fpm-8.3/releases) +[![](https://img.shields.io/badge/github-devilbox%2Fdocker--php--fpm--8.3-red.svg)](https://github.com/devilbox/docker-php-fpm-8.3 "github.com/devilbox/docker-php-fpm-8.3") [![lint](https://github.com/devilbox/docker-php-fpm-8.3/workflows/lint/badge.svg)](https://github.com/devilbox/docker-php-fpm-8.3/actions?query=workflow%3Alint) [![build](https://github.com/devilbox/docker-php-fpm-8.3/workflows/build/badge.svg)](https://github.com/devilbox/docker-php-fpm-8.3/actions?query=workflow%3Abuild) [![nightly](https://github.com/devilbox/docker-php-fpm-8.3/workflows/nightly/badge.svg)](https://github.com/devilbox/docker-php-fpm-8.3/actions?query=workflow%3Anightly) @@ -13,81 +14,165 @@ [![](https://img.shields.io/docker/pulls/devilbox/php-fpm-8.3.svg)](https://hub.docker.com/r/devilbox/php-fpm-8.3) + This repository will provide you a fully functional PHP-FPM 8.3 Docker image built from [official sources](https://github.com/php/php-src) nightly. It provides the base for [Devilbox PHP-FPM Docker images](https://github.com/devilbox/docker-php-fpm). -| Reference Project | -|-------------------| -| | +> ##### ๐Ÿฑ GitHub: [devilbox/docker-php-fpm-8.3](https://github.com/devilbox/docker-php-fpm-8.3) -## Similar Base Images +| Upstream Project | Reference Implementation | +|:----------------:|:------------------------:| +| | | +| Streamlined [PHP-FPM](https://github.com/devilbox/docker-php-fpm) images | The [Devilbox](https://github.com/cytopia/devilbox) | -Have a look at the following similar Devilbox base images for which no official versions exist yet: -* [PHP-FPM 5.2](https://github.com/devilbox/docker-php-fpm-5.2) -* [PHP-FPM 5.3](https://github.com/devilbox/docker-php-fpm-5.3) -* [PHP-FPM 7.4](https://github.com/devilbox/docker-php-fpm-7.4) -* [PHP-FPM 8.0](https://github.com/devilbox/docker-php-fpm-8.0) -* [PHP-FPM 8.1](https://github.com/devilbox/docker-php-fpm-8.1) -* [PHP-FPM 8.2](https://github.com/devilbox/docker-php-fpm-8.2) -* [PHP-FPM 8.3](https://github.com/devilbox/docker-php-fpm-8.3) -In case you are looking for development and production ready PHP-FPM images for all versions, -which have a vast amount of modules enabled by default go here: +## ๐Ÿ‹ Available Docker tags -* [PHP-FPM](https://github.com/devilbox/docker-php-fpm) +[![](https://img.shields.io/docker/pulls/devilbox/php-fpm-8.3.svg)](https://hub.docker.com/r/devilbox/php-fpm-8.3) -## Documentation +[`latest`][tag_latest] +```bash +docker pull devilbox/php-fpm-8.3 +``` -In case you seek help, go and visit the community pages. +#### Rolling releases - - - - - - - - - - - - - - - - - - - - -

Documentation

Chat

Forum

- - - - - - - - - - - -
devilbox.readthedocs.iogitter.im/devilboxdevilbox.discourse.group
+The following Docker image tags are rolling releases and are built and updated every night. + +[![nightly](https://github.com/devilbox/docker-php-fpm-8.3/workflows/nightly/badge.svg)](https://github.com/devilbox/docker-php-fpm-8.3/actions?query=workflow%3Anightly) + +| Docker Tag | Git Ref | Available Architectures | +|---------------------------------|--------------|-----------------------------------------------| +| **[`latest`][tag_latest]** | master | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` | + +[tag_latest]: https://github.com/devilbox/docker-php-fpm-8.3/blob/master/Dockerfiles/Dockerfile + + +#### Point in time releases + +The following Docker image tags are built once and can be used for reproducible builds. Its version never changes so you will have to update tags in your pipelines from time to time in order to stay up-to-date. + +[![build](https://github.com/devilbox/docker-php-fpm-8.3/workflows/build/badge.svg)](https://github.com/devilbox/docker-php-fpm-8.3/actions?query=workflow%3Abuild) + +| Docker Tag | Git Ref | Available Architectures | +|---------------------------------|--------------|-----------------------------------------------| +| **[``][tag_latest]** | git: `` | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` | + +> ๐Ÿ›ˆ Where `` refers to the chosen git tag from this repository. + + +## โˆ‘ Environment Variables + +None + + +## ๐Ÿ–ง Exposed Ports + +PHP-FPM listening port `9000` + + +## ๐Ÿ“‚ Volumes + +None + + +## โœฐ Available Extensions + +If you need a dockerized version of **PHP 8.3** or **PHP-FPM 8.3** which provides a vast amount of +extensions enabled by default visit: **[devilbox/docker-php-fpm](https://github.com/devilbox/docker-php-fpm)** + +> ๐Ÿ›ˆ Click below listed extensions for details: + + +| Extension | Built-in | +|--------------------------------|-----------| +| [ctype][lnk_ctype] | โœ“ | +| [curl][lnk_curl] | โœ“ | +| [date][lnk_date] | โœ“ | +| [dom][lnk_dom] | โœ“ | +| [FFI][lnk_ffi] | โœ“ | +| [fileinfo][lnk_fileinfo] | โœ“ | +| [filter][lnk_filter] | โœ“ | +| [ftp][lnk_ftp] | โœ“ | +| [hash][lnk_hash] | โœ“ | +| [iconv][lnk_iconv] | โœ“ | +| [json][lnk_json] | โœ“ | +| [libxml][lnk_libxml] | โœ“ | +| [mbstring][lnk_mbstring] | โœ“ | +| [mysqlnd][lnk_mysqlnd] | โœ“ | +| [openssl][lnk_openssl] | โœ“ | +| [pcre][lnk_pcre] | โœ“ | +| [PDO][lnk_pdo] | โœ“ | +| [pdo_sqlite][lnk_pdo_sqlite] | โœ“ | +| [Phar][lnk_phar] | โœ“ | +| [posix][lnk_posix] | โœ“ | +| [random][lnk_random] | โœ“ | +| [readline][lnk_readline] | โœ“ | +| [Reflection][lnk_reflection] | โœ“ | +| [session][lnk_session] | โœ“ | +| [SimpleXML][lnk_simplexml] | โœ“ | +| [sodium][lnk_sodium] | โœ“ | +| [SPL][lnk_spl] | โœ“ | +| [sqlite3][lnk_sqlite3] | โœ“ | +| [tokenizer][lnk_tokenizer] | โœ“ | +| [xml][lnk_xml] | โœ“ | +| [xmlreader][lnk_xmlreader] | โœ“ | +| [xmlwriter][lnk_xmlwriter] | โœ“ | +| [zlib][lnk_zlib] | โœ“ | + +[lnk_ctype]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/ctype +[lnk_curl]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/curl +[lnk_date]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/date +[lnk_dom]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/dom +[lnk_ffi]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/ffi +[lnk_fileinfo]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/fileinfo +[lnk_filter]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/filter +[lnk_ftp]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/ftp +[lnk_hash]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/hash +[lnk_iconv]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/iconv +[lnk_json]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/json +[lnk_libxml]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/libxml +[lnk_mbstring]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/mbstring +[lnk_mysqlnd]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/mysqlnd +[lnk_openssl]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/openssl +[lnk_pcre]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/pcre +[lnk_pdo]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/pdo +[lnk_pdo_sqlite]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/pdo_sqlite +[lnk_phar]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/phar +[lnk_posix]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/posix +[lnk_random]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/random +[lnk_readline]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/readline +[lnk_reflection]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/reflection +[lnk_session]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/session +[lnk_simplexml]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/simplexml +[lnk_sodium]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/sodium +[lnk_spl]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/spl +[lnk_sqlite3]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/sqlite3 +[lnk_tokenizer]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/tokenizer +[lnk_xml]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/xml +[lnk_xmlreader]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/xmlreader +[lnk_xmlwriter]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/xmlwriter +[lnk_zlib]: https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/zlib + -## Build +## โˆข Build + +Build the Docker image locally ```bash -# Build the Docker image locally make build - -# Rebuild the Docker image locally without cache +``` +Rebuild the Docker image locally without cache +```bash make rebuild - -# Test the Docker image after building +``` +Test the Docker image after building +```bash make test ``` -## Usage + +## ๐Ÿ–ณ Usage Add the following `FROM` line into your Dockerfile: @@ -95,52 +180,8 @@ Add the following `FROM` line into your Dockerfile: FROM devilbox/php-fpm-8.3:latest ``` -## Available Modules -If you need a dockerized version of **PHP 8.3** or **PHP-FPM 8.3** which provides a vast amount of -modules enabled by default visit: **[devilbox/docker-php-fpm](https://github.com/devilbox/docker-php-fpm)** - - -| Module | Built-in | -|--------------|-----------| -| Core | โœ” | -| ctype | โœ” | -| curl | โœ” | -| date | โœ” | -| dom | โœ” | -| FFI | โœ” | -| fileinfo | โœ” | -| filter | โœ” | -| ftp | โœ” | -| hash | โœ” | -| iconv | โœ” | -| json | โœ” | -| libxml | โœ” | -| mbstring | โœ” | -| mysqlnd | โœ” | -| openssl | โœ” | -| pcre | โœ” | -| PDO | โœ” | -| pdo_sqlite | โœ” | -| Phar | โœ” | -| posix | โœ” | -| random | โœ” | -| readline | โœ” | -| Reflection | โœ” | -| session | โœ” | -| SimpleXML | โœ” | -| sodium | โœ” | -| SPL | โœ” | -| sqlite3 | โœ” | -| standard | โœ” | -| tokenizer | โœ” | -| xml | โœ” | -| xmlreader | โœ” | -| xmlwriter | โœ” | -| zlib | โœ” | - - -## Example +## ๐Ÿ’ก Examples Create a temporary directory, navigate into it and copy/paste the commands below to get started. @@ -152,7 +193,7 @@ echo " htdocs/index.php #### 2. Start PHP container ```bash -docker run -d --rm --name devilbox-php-fpm-8-3 \ +docker run -d --rm --name devilbox-php-fpm-8.3 \ -v $(pwd)/htdocs:/var/www/default/htdocs devilbox/php-fpm-8.3 ``` @@ -161,9 +202,9 @@ docker run -d --rm --name devilbox-php-fpm-8-3 \ docker run -d --rm --name devilbox-nginx-stable \ -v $(pwd)/htdocs:/var/www/default/htdocs \ -e PHP_FPM_ENABLE=1 \ - -e PHP_FPM_SERVER_ADDR=devilbox-php-fpm-8-3 \ + -e PHP_FPM_SERVER_ADDR=devilbox-php-fpm-8.3 \ -p 8080:80 \ - --link devilbox-php-fpm-8-3 \ + --link devilbox-php-fpm-8.3 \ devilbox/nginx-stable ``` @@ -171,7 +212,130 @@ docker run -d --rm --name devilbox-nginx-stable \ Open up your browser at http://127.0.0.1:8080 -## License + +## ๐Ÿ” Similar Base Images + +Have a look at the following similar Devilbox base images for which no official versions exist yet: + +* **[`PHP-FPM 5.2`](https://github.com/devilbox/docker-php-fpm-5.2)** **[`PHP-FPM 5.3`](https://github.com/devilbox/docker-php-fpm-5.3)** **[`PHP-FPM 5.4`](https://github.com/devilbox/docker-php-fpm-5.4)** **[`PHP-FPM 5.5`](https://github.com/devilbox/docker-php-fpm-5.5)** +* **[`PHP-FPM 8.0`](https://github.com/devilbox/docker-php-fpm-8.0)** **[`PHP-FPM 8.1`](https://github.com/devilbox/docker-php-fpm-8.1)** **[`PHP-FPM 8.2`](https://github.com/devilbox/docker-php-fpm-8.2)** **[`PHP-FPM 8.3`](https://github.com/devilbox/docker-php-fpm-8.2)** + +In case you are looking for development and production ready PHP-FPM images for all versions, +which have a vast amount of modules enabled by default go here: **[PHP-FPM](https://github.com/devilbox/docker-php-fpm)** + +> ๐Ÿ›ˆ For details see **[Documentation: Base Images](https://github.com/devilbox/docker-php-fpm/blob/master/doc/base-images.md)** + + +## ๐Ÿ–ค Sister Projects + +Show some love for the following sister projects. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
๐Ÿ–ค Project๐Ÿฑ GitHub๐Ÿ‹ DockerHub
Devilbox
docker-php-fpmdevilbox/php-fpm
docker-php-fpm-communitydevilbox/php-fpm-community
docker-mysqldevilbox/mysql
+ docker-apache-2.2
+ docker-apache-2.4
+ docker-nginx-stable
+ docker-nginx-mainline +
+ devilbox/apache-2.2
+ devilbox/apache-2.4
+ devilbox/nginx-stable
+ devilbox/nginx-mainline +
+ + +## ๐Ÿ‘ซ Community + +In case you seek help, go and visit the community pages. + + + + + + + + + + + + + + + + + + + + + +

๐Ÿ“˜ Documentation

๐Ÿ—ช Chat

๐Ÿ—ซ Forum

+ + + + + + + + + + + +
devilbox.readthedocs.iogitter.im/devilboxdevilbox.discourse.group
+ + +## ๐Ÿง˜ Maintainer + +**[@cytopia](https://github.com/cytopia)** + +I try to keep with literally **over 100 projects** besides a full-time job. +If my work is making your life easier, consider contributing. ๐Ÿ–ค + +* [GitHub Sponsorship](https://github.com/sponsors/cytopia) +* [Patreon](https://www.patreon.com/devilbox) +* [Open Collective](https://opencollective.com/devilbox) + +**Findme:** +**๐Ÿฑ** [cytopia](https://github.com/cytopia) / [devilbox](https://github.com/devilbox) | +**๐Ÿ‹** [cytopia](https://hub.docker.com/r/cytopia/) / [devilbox](https://hub.docker.com/r/devilbox/) | +**๐Ÿฆ** [everythingcli](https://twitter.com/everythingcli) / [devilbox](https://twitter.com/devilbox) | +**๐Ÿ“–** [everythingcli.org](http://www.everythingcli.org/) + +**Contrib:** PyPI: [cytopia](https://pypi.org/user/cytopia/) **ยท** +Terraform: [cytopia](https://registry.terraform.io/namespaces/cytopia) **ยท** +Ansible: [cytopia](https://galaxy.ansible.com/cytopia) + + +## ๐Ÿ—Ž License **[MIT License](LICENSE)** diff --git a/tests/get-modules.sh b/tests/get-modules.sh index 641444b..55e597f 100755 --- a/tests/get-modules.sh +++ b/tests/get-modules.sh @@ -16,9 +16,26 @@ MODULES="$( docker run --rm -t --platform "${ARCH}" --entrypoint=php "${IMAGE}:$ | sort -u -f )" -echo "| Module | Built-in |" -echo "|--------------|-----------|" +echo "| Extension | Built-in |" +echo "|--------------------------------|-----------|" echo "${MODULES}" | while read -r line; do - line="$( echo "${line}" | sed 's/\r//g' | xargs )" - printf "| %-12s | โœ” |\n" "${line}" + name="$( printf "%s" "${line}" )" + nick="$( echo "${name}" | awk '{print tolower($0)}' | sed 's/\r//g' | xargs )" + link="$( echo "[${name}][lnk_${nick}]" | sed 's/\r//g' | xargs )" + if [ "${nick}" = "core" ] || [ "${nick}" = "standard" ]; then + continue + fi + printf "| %-30s | โœ“ |\n" "${link}" +done +echo + +echo "${MODULES}" | while read -r line; do + name="$( printf "%s" "${line}" )" + nick="$( echo "${name}" | awk '{print tolower($0)}' | sed 's/\r//g' | xargs )" + link="$( printf "%s" "[lnk_${nick}]" | sed 's/\r//g' | xargs )" + addr="$( printf "%s: %s" "${link}" "https://github.com/devilbox/docker-php-fpm/tree/master/php_modules/${nick}" | sed 's/\r//g' | xargs )" + if [ "${nick}" = "core" ] || [ "${nick}" = "standard" ]; then + continue + fi + printf "%s\n" "${addr}" done