一、docker创建一个统一的目录
/home/docker
/home/docker/swoole # swoole目录
/home/docker/swoole/swoole # swoole源码目录
/home/docker/swoole/project # swoole项目根目录
/home/docker/mysql/conf # mysql配置文件目录
/home/docker/mysql/data # mysql数据目录
/home/docker/nginx # nginx目录
/home/docker/nginx/conf # nginx配置目录
/home/docker/nginx/www/html # php项目根目录
/home/docker/php # php目录
/home/docker/redis # redis目录
/home/docker/redis/conf # redis配置目录
/home/docker/redis/data # redis数据目录
/home/docker/shipyard # shipyard数据及配置目录
/home/docker/swoft # swoft项目目录
/home/docker/swoft/swoftcli.phar # swoftcli工具,用于创建swoft项目
/home/docker/swoft/myblog # 通过swoftcli.phar创建的swoft项目
/home/docker/hyperf/project # hyperf项目目录
/home/docker/kafka/data # kafka数据目录
/home/docker/kafka/conf # kafka配置目录
/home/docker/kafka/logs # kafka日志目录
/home/docker/zookeeper/data # zookeeper数据目录
/home/docker/zookeeper/conf # zookeeper配置目录
/home/docker/zookeeper/logs # zookeeper日志目录
二、swoole安装及调试
1、下载swoole镜像对应PHP版本7.3
docker pull phpswoole/swoole:4.8.11-php7.3
2、测试下载的swoole镜像
docker run --rm phpswoole/swoole:4.8.11-php7.3 php -m
3、启动swoole容器
docker run --rm -p 8085:9501 --name swoole-test -v /home/docker/swoole/project:/var/www phpswoole/swoole:4.8.11-php7.3
4、启动后生成容器ID为1dd3d349f7ab
5、上传项目代码到 /home/docker/swoole/project 中,然后进入容器,docker -it exec 1dd3d349f7ab bash,然后运行服务,如:php web_socket_server.php
这里测试客户端的文件是html5,通过websocket与服务端通信
三、swoft安装及调试
1、下载swoft镜像
docker pull swoft/swoft
2、创建swoft容器
docker run -it -d --entrypoint="" -p 18306:18306 -v /home/docker/swoft:/var/www/swoft --name swoft-test swoft/swoft bash
-p 18306:18306 # 前面的端口是容器外的端口,后面的端口是映射到容器内的端口,配置在/var/www/swoft/myblog/app/bean.php里面
-v /home/docker/swoft:/var/www/swoft # 前面的目录是容器外的目录,后面的目录是容器里面的目录
--name swoft-test # 自定义容器名称
3、启动容器
docker start c5d35c2b2573 # 容器ID
4、进入swoft容器
docker exec -it c5d35c2b2573 bash
5、创建swoft项目
进入swoft容器后,使用【php swoftcli.phar create:app --type full myblog】创建swoft项目,myblog是项目名称
6、启动swoft项目的http服务
php ./myblog/bin/swoft http:start # 该命令在项目目录下,本例中对应/var/www/swoft/myblog/bin/swoft,然后在浏览器中输入http://localhost:18036/ 测试,可以打开页面,说明swoft服务启动成功
提示:swoftcli.phar是swoft的cli工具,用户管理swoft项目,可以在wget https://github.com/swoft-cloud/swoft-cli/releases/download/v0.2.0/swoftcli.phar 下载,放到/home/docker/swoft/目录
7、swoft项目开发
将/home/docker/swoft/myblog目录中的生成的默认代码下载到本地,然后在这个代码的基础上写自己的业务代码,写完后上传到这个目录,然后进入docker exec -it c5d35c2b2573 bash,这里是测试http server,进入容器后,php ./myblog/bin/swoft http:start 开启http服务,每次更新完代码如果原服务是开启的需要重启这个服务,如果没有开启的,需要开启服务,开启完服务,可以在浏览器中输入地址进行验证:http://172.16.150.128:18306/user/getUserList?userid=1 ,这里user是控制器名称,getUserList是控制器方法名称,整个路由就是:/user/getUserList,请求的参数userid
四、hyperf安装及调试
1、下载hyperf镜像
本例对应hyperf版本:7.3-alpine-v3.10-swoole-v4.8.10
docker pull hyperf/hyperf:7.3-alpine-v3.10-swoole-v4.8.10
2、创建并启动hyperf容器
docker run --name hyperf -v /home/docker/hyperf/project:/data/project -p 9504:9504 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:7.3-alpine-v3.10-swoole-v4.8.10
3、进入容器
docker exec -it 36a24dea31c2 bash
4、这里开发需要用到composer,将 Composer 镜像设置为阿里云镜像,加速国内下载速度
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
5、创建hyperf项目
cd /data/project
composer create-project hyperf/hyperf-skeleton
项目完整目录:/data/project/hyperf-skeleton
6、启动hyperf项目
cd hyperf-skeleton
php bin/hyperf.php start
五、mysql安装及调试
1、下载mysql镜像
本例对应的mysql版本是:8.0.26
docker pull mysql:8.0.26
2、创建mysql在容器外的存储目录
mkdir -p /home/docker/mysql/conf && mkdir -p /home/docker/mysql/data
3、创建并启动mysql容器
docker run
--name mysql_test
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=123456a
--mount type=bind,src=/home/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf
--mount type=bind,src=/home/docker/mysql/data,dst=/var/lib/data
--restart=on-failure:3
-d mysql
--name 设置容器名称
-p 设置映射端口,容器外的端口:容器内端口
-e 设置mysql root用户密码
--mont挂载配置目录和数据目录
-d 后台运行 \
4、配置mysql
vi /home/docker/mysql/conf/my.cnf
5、进入容器
docker exec -it mysql_test bash
六、redis安装及调试
1、下载redis镜像
docker pull redis:5.0.14
2、创建redis在容器外的存储目录
mkdir -p /home/docker/redis/conf && mkdir /home/docker/redis/data
3、创建并启动redis容器
docker run -itd
--name redis-test
-p 6379:6379
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf
-v /home/docker/redis/data:/data redis:5.0.14 redis-server /etc/redis/redis.conf --appendonly yes
4、配置redis
vi /home/docker/redis/conf/redis.conf
5、进入容器
docker exec -it redis-test bash
七、mongdb安装及调试
1、下载redis镜像
docker pull mongo:latest
2、创建MongDB在容器外的存储目录
3、创建并启动MongDB容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
4、配置MongDB
5、进入容器
docker exec -it mongo bash
八、php-fpm环境安装及调试
1、下载nginx镜像
docker pull php:7.3-fpm
2、创建在容器外的存储目录
mkdir -p /home/docker/php
3、创建并启动容器
docker run --name 7.3-fpm -v /home/docker/nginx/www/html:/www -d php:7.3-fpm
4、配置
5、进入容器
docker exec -it 7.3-fpm bash
九、php-nginx环境安装及调试
1、下载镜像
docker pull nginx
2、创建在容器外的存储目录
mkdir -p /home/docker/nginx/www/html /home/docker/nginx/conf /home/docker/nginx/logs
3、创建并启动容器
docker run
--name php-nginx-web
-p 8083:80 -d
-v /home/docker/nginx/www/html:/usr/share/nginx/html
-v /home/docker/nginx/conf.d:/etc/nginx/conf.d:ro
--link 7.3-fpm:php nginx
4、配置
5、进入容器
docker exec -it php-nginx-web bash