使用Docker搭建Swoole环境

本文档详细介绍了如何编写Dockerfile来基于php:7.4-cli镜像安装redis、gd和swoole扩展,创建自定义的PHP镜像。接着,展示了如何构建该镜像,并编写了一个简单的Swoole HTTP服务器测试文件。最后,通过Docker运行测试文件,启动服务,并通过端口映射使得外部可以访问。整个过程涵盖了Dockerfile的编写、镜像构建、PHP扩展安装和Swoole应用实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值