前言
swoole是有提供docker 镜像的
但是我喜欢自己尝试一下
Dockerfile编写
这里构建在php的cli镜像之上
使用 install-php-extensions 给php安装了redis gd swoole扩展
install-php-extensions 是我从github上先下载到本地的,因为使用ADD下载报错了
install-php-extensions 和 Dockerfile放在同一目录
设置容器工作目录为 /var/www/html/swoole
FROM php:7.4-cli
# 这个是因为ADD从github下载出错,我才通过 wget install-php-extensions 下载下来后,再拷贝到容器内
# 如果ADD github 没有问题
# 可以换成 ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
COPY install-php-extensions /usr/local/bin
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions gd redis swoole
WORKDIR /var/www/html/swoole
构建镜像
根据当前目录下的Dockerfile构建镜像 镜像标签为xrx/swoole
在Dockerfile下执行下面语句
docker build -t xrx/swoole .
测试文件
我将测试文件起名为index.php
将其放在 /var/www/html/swoole 目录
$service = new Swoole\Http\Server('0.0.0.0',9501);
$service->on('Request', function ($request, $response) {
$response->header('Content-Type', 'text/html; charset=utf-8');
$response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>');
});
$service->start();
使用swoole启动测试文件
通过-v将本地代码目录与容器工作目录绑定
通过php index.php 启动工作目录中的index.php 文件
创建了端口号为9501的http服务
通过 -p 将本地9501端口与容器9501端口映射
这样外部即可通过9501访问http服务
docker run -v /var/www/html/swoole:/var/www/html/swoole -p 9501:9501 xrx/swoole php index.php
```