Docker搭建Nginx+swoole环境

又是老朋友,Docker的搭建项目,还是并发问题,我们都知道,PHP有一款很好用的扩展,swoole,swoole可以集成到PHP开发环境中,我们只需要安装到PHP扩展里就行,详细步骤看我之前的文章Docker下php容器安装swoole扩展。

好了,那我们这次需要用到2个容器,一个普通的Nginx容器,另一个则是已经集成好Swoole的PHP-fpm容器,由于时间关系,我已经把集成好Swoole扩展的PHP容器再打包生成好一个镜像(ekko/swoole)了,可以直接创建一个swoole容器。

创建2个新容器:

docker run -it -d --name swoole-nginx -v /root/docker/swoole/code:/usr/share/nginx/html -v /root/docker/swoole-nginx.conf:/etc/nginx/conf.d/default.conf --network my-net -p 9000:80 nginx
docker run -it -d --name swool -v /root/docker/swoole/code:/usr/share/nginx/html --network my-net -p 8999:8888 ekko/swoole

nginx.conf的配置如下

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        if (!-e $request_filename) {
            proxy_pass http://swoole:8888;
        }
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

swoole中server.php代码如下

on("start", function ($server) {
    echo "Swoole http server is started at http://wrsndm:8999\n";
});

$http->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    echo "swoole already response";
    $response->end("Hello World\n");
});

$http->start();

因为Swoole是不支持fpm的,只支持cli启动,所以去到server.php的目录下,把服务启动

php server.php

接着外网访问http://wrsndm.online:9000/index.html,因为9000是映射到swoole-nginx的80端口,所以实际是经过了nginx,然后反向代理给swoole的8888端口处理了,所以输出了HelloWorld。

Docker搭建Nginx+swoole环境_第1张图片

你可能感兴趣的:(docker,swoole,php)