Try Swoole with Docker


FROM php:7.4.2-cli

RUN apt-get update && apt-get install vim -y && \
    apt-get install openssl -y && \
    apt-get install libssl-dev -y && \
    apt-get install wget -y && \
    apt-get install git -y && \
    apt-get install procps -y && \
    apt-get install htop -y

RUN cd /tmp && git clone && \
    cd swoole-src && \
    git checkout v4.6.7 && \
    phpize  && \
    ./configure --enable-openssl --enable-swoole-curl --enable-http2 --enable-mysqlnd && \
    make && make install

RUN touch /usr/local/etc/php/conf.d/swoole.ini && \
    echo '' > /usr/local/etc/php/conf.d/swoole.ini

RUN wget -O /usr/local/bin/dumb-init
RUN chmod +x /usr/local/bin/dumb-init

RUN apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/usr/local/bin/dumb-init", "--", "php"]

Save the above content into ./Dockerfile

Build php-swoole Docker image

docker build -f ./Dockerfile -t swoole-php .

Example Swoole Application


use Swoole\Http\Server;
use Swoole\Http\Request;
use Swoole\Http\Response;

$server = new Swoole\HTTP\Server("", 9501);

$server->on("Start", function(Server $server)
    echo "Swoole http server is started at\n";

$server->on("Request", function(Request $request, Response $response)
    $response->header("Content-Type", "text/plain");
    $response->end("Hello World\n");


Save the above code into ./server.php

Try your Swoole Application

On Linux or MacOS:

docker run --rm -p 9501:9501 -v $(pwd):/app -w /app swoole-php server.php

Or on Windows:

docker run --rm -p 9501:9501 -v C:/YOUR_DIR/:/app -w /app swoole-php server.php

You are able to access the hello world Swoole application from

Interested with Swoole? Get Started with Swoole now

Use Community Docker Images

You are free to build your own Swoole Docker image but there are a few community Swoole Docker images hosted on the hub as well, for example: