在 Kubernetes 中部署 Swoole 服务需要以下步骤:
- 编写 Dockerfile
FROM php:7.4-cli-alpine
# 安装依赖
RUN apk add --no-cache $PHPIZE_DEPS \
&& pecl install swoole \
&& docker-php-ext-enable swoole
# 复制代码到容器中
COPY . /app
# 设置工作目录
WORKDIR /app
# 启动命令
CMD ["php", "server.php"]
- 构建 Docker 镜像并上传到镜像仓库
docker build -t <image-name>:<tag> .
docker push <image-name>:<tag>
- 创建 Kubernetes deployment 和 service
apiVersion: apps/v1
kind: Deployment
metadata:
name: swoole-server-deployment
spec:
replicas: 1 # 副本数为1,可以根据实际情况进行调整
selector:
matchLabels:
app: swoole-server # 标签选择器,用于选择对应的 pod
template:
metadata:
labels:
app: swoole-server # pod 的标签,与选择器匹配
spec:
containers:
- name: php-swoole-server # 容器名称,自定义即可
image: <image-name>:<tag> # 镜像地址和版本号
ports:
- containerPort: 9501 # 容器暴露端口号
---
apiVersion: v1
kind: Service
metadata:
name: swoole-server-service
spec:
selector:
app: swoole-server # 标签选择器,选择对应的 pod
ports:
- protocol: TCP
port: 9501 # 服务暴露端口号
targetPort: 9501 # 目标容器端口号
- 应用配置文件
<?php
$host = getenv('SWOOLE_HOST') ?: '0.0.0.0';
$port = getenv('SWOOLE_PORT') ?: '9501';
$serv = new Swoole\Server($host, $port);
$serv->on('connect', function ($serv, $fd) {
echo "Client {$fd} connected.\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, 'Hello World!');
});
$serv->on('close', function ($serv, $fd) {
echo "Client {$fd} closed.\n";
});
echo "Swoole server started at http://{$host}:{$port}\n";
$serv->start();
- 部署应用
kubectl apply -f deployment.yaml
- 查看部署状态
kubectl get pods
kubectl get services
- 访问服务
通过 Service 的 IP 和端口访问服务即可。
参考资料:




