From f94b2b61afc74f687020e106d62dfeae1d002676 Mon Sep 17 00:00:00 2001 From: Demin Yin Date: Thu, 27 Apr 2023 21:38:43 -0700 Subject: [PATCH] build Swoole 5.0.3 images --- CHANGELOG.md | 6 ++++ README.md | 22 ++++++------ config/5.0.3.yml | 16 +++++++++ dockerfiles/5.0.3/php8.0/alpine/Dockerfile | 32 +++++++++++++++++ dockerfiles/5.0.3/php8.0/cli/Dockerfile | 42 ++++++++++++++++++++++ dockerfiles/5.0.3/php8.1/alpine/Dockerfile | 32 +++++++++++++++++ dockerfiles/5.0.3/php8.1/cli/Dockerfile | 42 ++++++++++++++++++++++ dockerfiles/5.0.3/php8.2/alpine/Dockerfile | 32 +++++++++++++++++ dockerfiles/5.0.3/php8.2/cli/Dockerfile | 42 ++++++++++++++++++++++ 9 files changed, 255 insertions(+), 11 deletions(-) create mode 100644 config/5.0.3.yml create mode 100644 dockerfiles/5.0.3/php8.0/alpine/Dockerfile create mode 100644 dockerfiles/5.0.3/php8.0/cli/Dockerfile create mode 100644 dockerfiles/5.0.3/php8.1/alpine/Dockerfile create mode 100644 dockerfiles/5.0.3/php8.1/cli/Dockerfile create mode 100644 dockerfiles/5.0.3/php8.2/alpine/Dockerfile create mode 100644 dockerfiles/5.0.3/php8.2/cli/Dockerfile diff --git a/CHANGELOG.md b/CHANGELOG.md index 86d2908..5a6cbd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Table of Contents ================= * [Swoole 5.0](#swoole-50) + * [5.0.3](#503) * [5.0.2](#502) * [5.0.1](#501) * [5.0.0](#500) @@ -66,6 +67,11 @@ Table of Contents # Swoole 5.0 +## 5.0.3 + +### Changed +- Upgrade _Composer_ from 2.5.2 to 2.5.5. + ## 5.0.2 ### Changed diff --git a/README.md b/README.md index 09f1d2b..50ce89c 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ The `phpswoole/swoole` images come in three flavors, each designed for a specifi * `phpswoole/swoole:latest` * `phpswoole/swoole:5.0` * `phpswoole/swoole:5.0-php8.1` -* `phpswoole/swoole:5.0.2-php8.1` +* `phpswoole/swoole:5.0.3-php8.1` This variant is based on the _php:cli_ images, with a few changes. It uses _Supervisord_ to manage booting processes, and has _Composer_ preinstalled. @@ -180,7 +180,7 @@ This variant is based on the _php:cli_ images, with a few changes. It uses _Supe * `phpswoole/swoole:latest-dev` * `phpswoole/swoole:5.0-dev` * `phpswoole/swoole:5.0-php8.1-dev` -* `phpswoole/swoole:5.0.2-php8.1-dev` +* `phpswoole/swoole:5.0.3-php8.1-dev` This variant is very similar to the previous one, but it has extra tools added for testing, debugging, and monitoring purpose, including [gdb](https://www.gnu.org/s/gdb), git, lsof, [strace](https://strace.io), [tcpdump](https://www.tcpdump.org), [Valgrind](http://www.valgrind.org), and vim. @@ -190,12 +190,12 @@ including [gdb](https://www.gnu.org/s/gdb), git, lsof, [strace](https://strace.i * `phpswoole/swoole:latest-alpine` * `phpswoole/swoole:5.0-alpine` * `phpswoole/swoole:5.0-php8.1-alpine` -* `phpswoole/swoole:5.0.2-php8.1-alpine` +* `phpswoole/swoole:5.0.3-php8.1-alpine` You can use this variant in the same way as using the _php:alpine_ image, except that we changed the default working directory to _/var/www_. Also, we have _Composer_ preinstalled in the image. -Note: We don't have development tools built in for Alpine images. There is no Docker images like `phpswoole/swoole:5.0.2-php8.1-alpine-dev`. +Note: We don't have development tools built in for Alpine images. There is no Docker images like `phpswoole/swoole:5.0.3-php8.1-alpine-dev`. # Supported Tags and Respective `Dockerfile` Links @@ -205,9 +205,9 @@ Note: We don't have development tools built in for Alpine images. There is no Do | PHP Versions | Default Images | Dev Images | Alpine Images | |-|-|-|-| -| PHP 8.2 | [5.0.2-php8.2, 5.0-php8.2](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.2/cli/Dockerfile) | [5.0.2-php8.2-dev, 5.0-php8.2-dev](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.2/cli/Dockerfile) | [5.0.2-php8.2-alpine, 5.0-php8.2-alpine](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.2/alpine/Dockerfile) | -| PHP 8.1 | [5.0.2-php8.1, 5.0-php8.1,
5.0, latest](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.1/cli/Dockerfile) | [5.0.2-php8.1-dev, 5.0-php8.1-dev,
5.0-dev, latest-dev](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.1/cli/Dockerfile) | [5.0.2-php8.1-alpine, 5.0-php8.1-alpine,
5.0-alpine, latest-alpine](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.1/alpine/Dockerfile) | -| PHP 8.0 | [5.0.2-php8.0, 5.0-php8.0](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.0/cli/Dockerfile) | [5.0.2-php8.0-dev, 5.0-php8.0-dev](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.0/cli/Dockerfile) | [5.0.2-php8.0-alpine, 5.0-php8.0-alpine](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.2/php8.0/alpine/Dockerfile) | +| PHP 8.2 | [5.0.3-php8.2, 5.0-php8.2](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.2/cli/Dockerfile) | [5.0.3-php8.2-dev, 5.0-php8.2-dev](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.2/cli/Dockerfile) | [5.0.3-php8.2-alpine, 5.0-php8.2-alpine](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.2/alpine/Dockerfile) | +| PHP 8.1 | [5.0.3-php8.1, 5.0-php8.1,
5.0, latest](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.1/cli/Dockerfile) | [5.0.3-php8.1-dev, 5.0-php8.1-dev,
5.0-dev, latest-dev](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.1/cli/Dockerfile) | [5.0.3-php8.1-alpine, 5.0-php8.1-alpine,
5.0-alpine, latest-alpine](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.1/alpine/Dockerfile) | +| PHP 8.0 | [5.0.3-php8.0, 5.0-php8.0](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.0/cli/Dockerfile) | [5.0.3-php8.0-dev, 5.0-php8.0-dev](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.0/cli/Dockerfile) | [5.0.3-php8.0-alpine, 5.0-php8.0-alpine](https://github.com/swoole/docker-swoole/blob/master/dockerfiles/5.0.3/php8.0/alpine/Dockerfile) | ### Swoole 4.8 @@ -276,22 +276,22 @@ follow these three steps. ```bash ./bin/generate-dockerfiles.php nightly # Generate dockerfiles to build images from the master branch of Swoole. -./bin/generate-dockerfiles.php 5.0.2 # Generate dockerfiles to build images for Swoole 5.0.2. +./bin/generate-dockerfiles.php 5.0.3 # Generate dockerfiles to build images for Swoole 5.0.3. ``` **3**. Build Docker images with commands like: ```bash docker build -t phpswoole/swoole -f dockerfiles/latest/php8.1/cli/Dockerfile . -docker build -t phpswoole/swoole:5.0.2-php8.1 -f dockerfiles/5.0.2/php8.1/cli/Dockerfile . -docker build -t phpswoole/swoole:5.0.2-php8.1-alpine -f dockerfiles/5.0.2/php8.1/alpine/Dockerfile . +docker build -t phpswoole/swoole:5.0.3-php8.1 -f dockerfiles/5.0.3/php8.1/cli/Dockerfile . +docker build -t phpswoole/swoole:5.0.3-php8.1-alpine -f dockerfiles/5.0.3/php8.1/alpine/Dockerfile . ``` To build development images (where extra tools are included), add an argument _DEV_MODE_: ```bash docker build --build-arg DEV_MODE=true -t phpswoole/swoole:latest-dev -f dockerfiles/latest/php8.1/cli/Dockerfile . -docker build --build-arg DEV_MODE=true -t phpswoole/swoole:5.0.2-php8.1-dev -f dockerfiles/5.0.2/php8.1/cli/Dockerfile . +docker build --build-arg DEV_MODE=true -t phpswoole/swoole:5.0.3-php8.1-dev -f dockerfiles/5.0.3/php8.1/cli/Dockerfile . ``` # Credits diff --git a/config/5.0.3.yml b/config/5.0.3.yml new file mode 100644 index 0000000..a75d089 --- /dev/null +++ b/config/5.0.3.yml @@ -0,0 +1,16 @@ +# The YAML configuration file for generating Dockerfile of image phpswoole/swoole:5.0.3. +# For technical details of the configuration file, please check comments and sample configurations in file /config.yml. +# +status: "under development" +php: + - "8.0.28" + - "8.1.18" + - "8.2.5" +image: + composer: + version: "2.5.5" + php_extensions: + redis: + version: "5.3.7" + configureoptions: "enable-redis-igbinary=\"no\" enable-redis-lzf=\"no\" enable-redis-zstd=\"no\"" + enabled: true diff --git a/dockerfiles/5.0.3/php8.0/alpine/Dockerfile b/dockerfiles/5.0.3/php8.0/alpine/Dockerfile new file mode 100644 index 0000000..0647fae --- /dev/null +++ b/dockerfiles/5.0.3/php8.0/alpine/Dockerfile @@ -0,0 +1,32 @@ +FROM php:8.0.28-cli-alpine3.16 + +RUN \ + set -ex && \ + curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ + chmod +x /usr/bin/composer && \ + composer self-update --clean-backups 2.5.5 && \ + apk update && \ + apk add --no-cache libstdc++ libpq && \ + apk add --no-cache --virtual .build-deps $PHPIZE_DEPS curl-dev postgresql-dev openssl-dev pcre-dev pcre2-dev zlib-dev && \ +# PHP extension pdo_mysql is included since 4.8.12+ and 5.0.1+. + docker-php-ext-install pdo_mysql && \ + pecl channel-update pecl.php.net && \ + pecl install --configureoptions 'enable-redis-igbinary="no" enable-redis-lzf="no" enable-redis-zstd="no"' redis-5.3.7 && \ +# PHP extension Redis is included since 4.8.12+ and 5.0.1+. + docker-php-ext-enable redis && \ + docker-php-ext-install sockets && \ + docker-php-source extract && \ + mkdir /usr/src/php/ext/swoole && \ + curl -sfL https://github.com/swoole/swoole-src/archive/v5.0.3.tar.gz -o swoole.tar.gz && \ + tar xfz swoole.tar.gz --strip-components=1 -C /usr/src/php/ext/swoole && \ + docker-php-ext-configure swoole \ + --enable-mysqlnd \ + --enable-swoole-pgsql \ + --enable-openssl \ + --enable-sockets --enable-swoole-curl && \ + docker-php-ext-install -j$(nproc) swoole && \ + rm -f swoole.tar.gz $HOME/.composer/*-old.phar && \ + docker-php-source delete && \ + apk del .build-deps + +WORKDIR "/var/www/" diff --git a/dockerfiles/5.0.3/php8.0/cli/Dockerfile b/dockerfiles/5.0.3/php8.0/cli/Dockerfile new file mode 100644 index 0000000..1a9b563 --- /dev/null +++ b/dockerfiles/5.0.3/php8.0/cli/Dockerfile @@ -0,0 +1,42 @@ +FROM php:8.0.28-cli + +ENV DEBIAN_FRONTEND noninteractive +ENV TERM xterm-color + +ARG DEV_MODE +ENV DEV_MODE $DEV_MODE + +COPY ./rootfilesystem/ / + +RUN \ + set -ex && \ + curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ + chmod +x /usr/bin/composer && \ + composer self-update 2.5.5 && \ + apt-get update && \ + apt-get install -y \ + libcurl4-openssl-dev \ + libpq-dev \ + libssl-dev \ + supervisor \ + unzip \ + zlib1g-dev \ + --no-install-recommends && \ +# PHP extension pdo_mysql is included since 4.8.12+ and 5.0.1+. + docker-php-ext-install pdo_mysql && \ + pecl channel-update pecl.php.net && \ + pecl install --configureoptions 'enable-redis-igbinary="no" enable-redis-lzf="no" enable-redis-zstd="no"' redis-5.3.7 && \ +# PHP extension Redis is included since 4.8.12+ and 5.0.1+. + docker-php-ext-enable redis && \ + install-swoole.sh 5.0.3 \ + --enable-mysqlnd \ + --enable-swoole-pgsql \ + --enable-openssl \ + --enable-sockets --enable-swoole-curl && \ + mkdir -p /var/log/supervisor && \ + rm -rf /var/lib/apt/lists/* $HOME/.composer/*-old.phar /usr/bin/qemu-*-static + +ENTRYPOINT ["/entrypoint.sh"] +CMD [] + +WORKDIR "/var/www/" diff --git a/dockerfiles/5.0.3/php8.1/alpine/Dockerfile b/dockerfiles/5.0.3/php8.1/alpine/Dockerfile new file mode 100644 index 0000000..b63f6e9 --- /dev/null +++ b/dockerfiles/5.0.3/php8.1/alpine/Dockerfile @@ -0,0 +1,32 @@ +FROM php:8.1.18-cli-alpine3.16 + +RUN \ + set -ex && \ + curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ + chmod +x /usr/bin/composer && \ + composer self-update --clean-backups 2.5.5 && \ + apk update && \ + apk add --no-cache libstdc++ libpq && \ + apk add --no-cache --virtual .build-deps $PHPIZE_DEPS curl-dev postgresql-dev openssl-dev pcre-dev pcre2-dev zlib-dev && \ +# PHP extension pdo_mysql is included since 4.8.12+ and 5.0.1+. + docker-php-ext-install pdo_mysql && \ + pecl channel-update pecl.php.net && \ + pecl install --configureoptions 'enable-redis-igbinary="no" enable-redis-lzf="no" enable-redis-zstd="no"' redis-5.3.7 && \ +# PHP extension Redis is included since 4.8.12+ and 5.0.1+. + docker-php-ext-enable redis && \ + docker-php-ext-install sockets && \ + docker-php-source extract && \ + mkdir /usr/src/php/ext/swoole && \ + curl -sfL https://github.com/swoole/swoole-src/archive/v5.0.3.tar.gz -o swoole.tar.gz && \ + tar xfz swoole.tar.gz --strip-components=1 -C /usr/src/php/ext/swoole && \ + docker-php-ext-configure swoole \ + --enable-mysqlnd \ + --enable-swoole-pgsql \ + --enable-openssl \ + --enable-sockets --enable-swoole-curl && \ + docker-php-ext-install -j$(nproc) swoole && \ + rm -f swoole.tar.gz $HOME/.composer/*-old.phar && \ + docker-php-source delete && \ + apk del .build-deps + +WORKDIR "/var/www/" diff --git a/dockerfiles/5.0.3/php8.1/cli/Dockerfile b/dockerfiles/5.0.3/php8.1/cli/Dockerfile new file mode 100644 index 0000000..857b9a9 --- /dev/null +++ b/dockerfiles/5.0.3/php8.1/cli/Dockerfile @@ -0,0 +1,42 @@ +FROM php:8.1.18-cli + +ENV DEBIAN_FRONTEND noninteractive +ENV TERM xterm-color + +ARG DEV_MODE +ENV DEV_MODE $DEV_MODE + +COPY ./rootfilesystem/ / + +RUN \ + set -ex && \ + curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ + chmod +x /usr/bin/composer && \ + composer self-update 2.5.5 && \ + apt-get update && \ + apt-get install -y \ + libcurl4-openssl-dev \ + libpq-dev \ + libssl-dev \ + supervisor \ + unzip \ + zlib1g-dev \ + --no-install-recommends && \ +# PHP extension pdo_mysql is included since 4.8.12+ and 5.0.1+. + docker-php-ext-install pdo_mysql && \ + pecl channel-update pecl.php.net && \ + pecl install --configureoptions 'enable-redis-igbinary="no" enable-redis-lzf="no" enable-redis-zstd="no"' redis-5.3.7 && \ +# PHP extension Redis is included since 4.8.12+ and 5.0.1+. + docker-php-ext-enable redis && \ + install-swoole.sh 5.0.3 \ + --enable-mysqlnd \ + --enable-swoole-pgsql \ + --enable-openssl \ + --enable-sockets --enable-swoole-curl && \ + mkdir -p /var/log/supervisor && \ + rm -rf /var/lib/apt/lists/* $HOME/.composer/*-old.phar /usr/bin/qemu-*-static + +ENTRYPOINT ["/entrypoint.sh"] +CMD [] + +WORKDIR "/var/www/" diff --git a/dockerfiles/5.0.3/php8.2/alpine/Dockerfile b/dockerfiles/5.0.3/php8.2/alpine/Dockerfile new file mode 100644 index 0000000..b4139d7 --- /dev/null +++ b/dockerfiles/5.0.3/php8.2/alpine/Dockerfile @@ -0,0 +1,32 @@ +FROM php:8.2.5-cli-alpine3.16 + +RUN \ + set -ex && \ + curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ + chmod +x /usr/bin/composer && \ + composer self-update --clean-backups 2.5.5 && \ + apk update && \ + apk add --no-cache libstdc++ libpq && \ + apk add --no-cache --virtual .build-deps $PHPIZE_DEPS curl-dev linux-headers postgresql-dev openssl-dev pcre-dev pcre2-dev zlib-dev && \ +# PHP extension pdo_mysql is included since 4.8.12+ and 5.0.1+. + docker-php-ext-install pdo_mysql && \ + pecl channel-update pecl.php.net && \ + pecl install --configureoptions 'enable-redis-igbinary="no" enable-redis-lzf="no" enable-redis-zstd="no"' redis-5.3.7 && \ +# PHP extension Redis is included since 4.8.12+ and 5.0.1+. + docker-php-ext-enable redis && \ + docker-php-ext-install sockets && \ + docker-php-source extract && \ + mkdir /usr/src/php/ext/swoole && \ + curl -sfL https://github.com/swoole/swoole-src/archive/v5.0.3.tar.gz -o swoole.tar.gz && \ + tar xfz swoole.tar.gz --strip-components=1 -C /usr/src/php/ext/swoole && \ + docker-php-ext-configure swoole \ + --enable-mysqlnd \ + --enable-swoole-pgsql \ + --enable-openssl \ + --enable-sockets --enable-swoole-curl && \ + docker-php-ext-install -j$(nproc) swoole && \ + rm -f swoole.tar.gz $HOME/.composer/*-old.phar && \ + docker-php-source delete && \ + apk del .build-deps + +WORKDIR "/var/www/" diff --git a/dockerfiles/5.0.3/php8.2/cli/Dockerfile b/dockerfiles/5.0.3/php8.2/cli/Dockerfile new file mode 100644 index 0000000..92387ea --- /dev/null +++ b/dockerfiles/5.0.3/php8.2/cli/Dockerfile @@ -0,0 +1,42 @@ +FROM php:8.2.5-cli + +ENV DEBIAN_FRONTEND noninteractive +ENV TERM xterm-color + +ARG DEV_MODE +ENV DEV_MODE $DEV_MODE + +COPY ./rootfilesystem/ / + +RUN \ + set -ex && \ + curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ + chmod +x /usr/bin/composer && \ + composer self-update 2.5.5 && \ + apt-get update && \ + apt-get install -y \ + libcurl4-openssl-dev \ + libpq-dev \ + libssl-dev \ + supervisor \ + unzip \ + zlib1g-dev \ + --no-install-recommends && \ +# PHP extension pdo_mysql is included since 4.8.12+ and 5.0.1+. + docker-php-ext-install pdo_mysql && \ + pecl channel-update pecl.php.net && \ + pecl install --configureoptions 'enable-redis-igbinary="no" enable-redis-lzf="no" enable-redis-zstd="no"' redis-5.3.7 && \ +# PHP extension Redis is included since 4.8.12+ and 5.0.1+. + docker-php-ext-enable redis && \ + install-swoole.sh 5.0.3 \ + --enable-mysqlnd \ + --enable-swoole-pgsql \ + --enable-openssl \ + --enable-sockets --enable-swoole-curl && \ + mkdir -p /var/log/supervisor && \ + rm -rf /var/lib/apt/lists/* $HOME/.composer/*-old.phar /usr/bin/qemu-*-static + +ENTRYPOINT ["/entrypoint.sh"] +CMD [] + +WORKDIR "/var/www/"