相关
- 系统: window7
- 编辑器: sublime3
- docker: 下载toolbox安装, ..略
- swoole是php扩展
- swool 不支持在windows安装
- 使用docker运行swoole代码
- 参考: What's the best way to share files from Windows to Boot2docker VM
登录docker-machine :
- 命令:
docker-machine ssh default
- 查看ip:
ifconfig
安装并启动容器 twosee/swoole-coroutine
# 查看已有镜像
docker images
# 查看已有容器
# -a 表示查看所有容器, 包括未运行的容器, 查看当前运行的容器可去掉
docker ps -a
# --name 容器别名
# -d 后台运行
# -v 挂载文件夹到容器
# /c/Users/oo/Documents/Kitematic/swoole 此文件夹是window7共享到boot2docker虚拟机的文件夹
# /root 表示将第一个文件夹挂载到容器的/root目录. 进入容器/root目录可浏览上一步的目录
# -p 端口映射, 第一个是虚拟机端口, 第二个是容器端口
docker run -ti -d --name=swoole twosee/swoole-coroutine -v /c/Users/oo/Documents/Kitematic/swoole:/root -p 9502:9502 php /root/server.php
编辑代码并运行
- 在win7 使用编辑器打开
/c/Users/oo/Documents/Kitematic/swoole
目录 - 编辑代码
// server.php
// websocket 服务器
$ws = new swoole_websocket_server('0.0.0.0', 9502);
$ws->on('open', function ($ws, $request) {
$ws->push($request->fd, 'connect success');
});
$ws->on('close', function ($ws, $fd) {
echo "fd: $fd close";
});
$ws->on('message', function ($ws, $frame) {
$ws->push($frame->fd, "server: " . $frame->data);
});
$ws->start();
// html 客户端
var ws = new WebSocket("ws://虚拟机ip:9502");
ws.onmessage = function (e) {
console.log(e.data);
}
docker-compose 配置 (2019.8.21)
- 目录结构
- app
- src
index.php
docker-compose.yml
- docker-compose 配置
version: "3.4"
services:
swoole:
image: twosee/swoole-coroutine:latest
volumes:
# docker-machine ssh default
# 查找当前目录并替换 ./
- ./:/app
ports:
# 第一个9502 是windows的访问端口, 可以自定义
# 第二个9502 是swoole容器中启动的端口, 在index.php设置
# 通过 http://192.168.99.100:9502 访问
# websocket url: "ws://192.168.99.100:9502"
- 9502:9502
entrypoint: ["php", "/app/index.php"]
- 进入目录,
docker-compose.exe up