phpswoole/swoole
Official Docker image for PHP Swoole
1M+
This image is built for general-purpose. We have different examples included in this Git repository to help developers to get familiar with the image and Swoole.
You can get the image from here.
COPY
command only in dockerfiles).NOTES
The phpswoole/swoole
image is built using the official PHP image as base image, with a few changes.
For basic usage, please check the description section of the official PHP image.
Same as in the official PHP image, most PHP extensions can be installed/configured using built-in helper scripts docker-php-ext-configure
, docker-php-ext-install
, docker-php-ext-enable
, and docker-php-source
. Here are some examples.
# To install the MySQL extensions.
# NOTE: The pdo_mysql extension is included in 4.8.12+ and 5.0.1+ images.
FROM phpswoole/swoole:4.7-php7.4-alpine
RUN docker-php-ext-install mysqli pdo_mysql
# To install the Redis extension.
# NOTE: The Redis extension is included in 4.8.12+ and 5.0.1+ images.
FROM phpswoole/swoole:4.7-php7.4-alpine
RUN set -ex \
&& pecl channel-update pecl.php.net \
&& yes no | pecl install redis-stable \
&& docker-php-ext-enable redis
# To install the Couchbase extension.
FROM phpswoole/swoole:4.8-php7.4-alpine
RUN set -ex \
&& apk update \
&& apk add --no-cache libcouchbase=2.10.6-r0 \
&& apk add --no-cache --virtual .build-deps $PHPIZE_DEPS libcouchbase-dev=2.10.6-r0 zlib-dev \
&& pecl update-channels \
&& pecl install couchbase-2.6.2 \
&& docker-php-ext-enable couchbase \
&& apk del .build-deps \
&& rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/src/php.tar.xz*
Since 4.8.12+ and 5.0.1+, PHP extensions pdo_mysql and Redis are installed and enabled by default. If you want to disable them, you can use the following commands in your Dockerfile.
FROM phpswoole/swoole:4.8-alpine
RUN set -ex && \
rm -f "$(php-config --ini-dir)/docker-php-ext-pdo_mysql.ini" && \
rm -f "$(php-config --ini-dir)/docker-php-ext-redis.ini"
Note that above commands will remove the corresponding configuration files for the extensions, but won't remove the extensions themselves.
Following examples are for non-Alpine images only. We don't have examples included for the Alpine images.
You can use the image to serve an HTTP/WebSocket server, or run some one-off command with it. e.g.,
docker run --rm phpswoole/swoole php -m
docker run --rm phpswoole/swoole php --ri swoole
docker run --rm phpswoole/swoole composer --version
We have various examples included under folder "examples/" to help developers better use the image. These examples are numerically ordered. Each example has a docker-compose.yml file included, along with some other files. To run an example, please start Docker containers using the docker-compose.yml file included, then check HTTP output from URL http://127.0.0.1 unless otherwise noted. You may use the following commands to start/stop/restart Docker containers:
./bin/example.sh start 00 # To start container(s) of the first example.
./bin/example.sh stop 00 # To stop container(s) of the first example.
./bin/example.sh restart 00 # To restart container(s) of the first example.
To run another example, just replace the last command line parameter 00 with an example number (e.g., 05).
Here is a list of the examples under folder "examples/":
supervisord
) in Docker containers.The phpswoole/swoole
images come in three flavors, each designed for a specific use case.
latest
, <swoole-version>
, and <swoole-version>-php<php-version>
phpswoole/swoole:latest
phpswoole/swoole:5.1
phpswoole/swoole:5.1-php8.2
phpswoole/swoole:5.1.7-php8.2
This variant is based on the php:cli images, with a few changes. It uses Supervisord to manage booting processes, and has Composer preinstalled.
Since Swoole 6.0.0, there is a Zend Thread Safety (ZTS) version of the image available, which is suffixed with -zts
. e.g., phpswoole/swoole:6.0-php8.3-zts
.
latest-dev
, <swoole-version>-dev
, and <swoole-version>-php<php-version>-dev
phpswoole/swoole:latest-dev
phpswoole/swoole:5.1-dev
phpswoole/swoole:5.1-php8.2-dev
phpswoole/swoole:5.1.7-php8.2-dev
This variant is very similar to the previous one, but it has extra tools added for testing, debugging, and monitoring purpose, including gdb, git, lsof, strace, tcpdump, Valgrind, and vim.
Since Swoole 6.0.0, there is a Zend Thread Safety (ZTS) version of the image available, which is suffixed with -zts-dev
. e.g., phpswoole/swoole:6.0-php8.3-zts-dev
.
latest-alpine
, <swoole-version>-alpine
, and <swoole-version>-php<php-version>-alpine
phpswoole/swoole:latest-alpine
phpswoole/swoole:5.1-alpine
phpswoole/swoole:5.1-php8.2-alpine
phpswoole/swoole:5.1.7-php8.2-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.1.7-php8.2-alpine-dev
.
Dockerfile
LinksPHP Versions | Default Images | Dev Images | ZTS Images | Alpine Images |
---|---|---|---|---|
PHP 8.4 | php8.4 | php8.4-dev | php8.4-zts | php8.4-alpine |
PHP 8.3 | php8.3 | php8.3-dev | php8.3-zts | php8.3-alpine |
PHP 8.2 | php8.2 | php8.2-dev | php8.2-zts | php8.2-alpine |
PHP 8.1 | php8.1 | php8.1-dev | php8.1-zts | php8.1-alpine |
The Docker images are built and pushed out automatically through Travis. If you want to build some image manually, please follow these three steps.
1. Install Composer packages. If you have command "composer" installed already, just run composer update -n
.
2. Use commands like following to create dockerfiles:
./bin/generate-dockerfiles.php nightly # Generate dockerfiles to build images from the master branch of Swoole.
./bin/generate-dockerfiles.php 5.1.7 # Generate dockerfiles to build images for Swoole 5.1.7.
3. Build Docker images with commands like:
docker build -t phpswoole/swoole:php8.2 -f dockerfiles/nightly/php8.2/cli/Dockerfile .
docker build -t phpswoole/swoole:5.1.7-php8.2 -f dockerfiles/5.1.7/php8.2/cli/Dockerfile .
docker build -t phpswoole/swoole:5.1.7-php8.2-alpine -f dockerfiles/5.1.7/php8.2/alpine/Dockerfile .
To build development images (where extra tools are included), add an argument DEV_MODE:
docker build --build-arg DEV_MODE=true -t phpswoole/swoole:php8.2-dev -f dockerfiles/nightly/php8.2/cli/Dockerfile .
docker build --build-arg DEV_MODE=true -t phpswoole/swoole:5.1.7-php8.2-dev -f dockerfiles/5.1.7/php8.2/cli/Dockerfile .
docker pull phpswoole/swoole