docker分布式部署gatewayworker

adminv

register注册中心

register注册中心 ,参考案例git仓库:https://e.coding.net/adminv/gatewayworker/gatewayworker-register.git

通过上方git案例仓库代码构建 镜像(register)

docker build -t register .

通过镜像启动 register 容器服务,映射容器1238端口到宿主机1238端口

docker run -it -p1238:1238 --name register register   


gateway网关和 business

gateway网关和business处理 ,参考案例git仓库
https://e.coding.net/adminv/gatewayworker/gatewayworker-business.git

1: 修改 仓库中的 start.php ,register_ip为Register宿主机ip

2: 通过上方git案例仓库代码构建 gateway+business 镜像(gateway)

docker build -t gateway .

3:启动容器服务

暴露gateway 8282端口到宿主机8282, 暴露2000-2003(register联系gateway进程)

docker run -it -p 8282:8282 -p 2000-2003:2000-2003 --name=gateway gateway

使用telnet测试完毕

阅读 354
3个评论

qkhhxkj

谢谢大佬,晚上回去试下

  • 暂无评论
qkhhxkj

可算找到问题了,之前在没有修改代码的时候一直都跑不起来,今天才发现原来在下载的demo 里这个东西
在安装环境的文档里说 安装 libevent扩展(或者event扩展)
可现在的docker 只安装了 libevent 并没有安装 event
但是代码里却判断安装 event
现是在跑起来了

  • adminv 2021-12-23

    apk add php7-pecl-event-3.0.6-r0 ; 安装php7-event拓展(libevent-dev-2.1.12-r4 不适合php7)

  • qkhhxkj 2021-12-23

    大佬还有一个问题就是守护进程运行为什么不行,就是
    php start.php start -d
    加了这个-d 就是跑不起来,不加就可以
    这是为什么呢

  • adminv 2021-12-23

    因为-d,是后台运行,非阻塞控制台,所以容器执行完就退出来,不加d容器被阻塞才会一直运行着,而且不加d还有输出日志,docker logs 容器名 就能查看,

    如果要php start.php start -d,那么就修改启动命令为 /bin/sh -c "php /app/start.php start -d ;/bin/sh "阻塞,或者使用/usr/bin/supervisord(需要安装的)

    如果只是 docker run 在后台运行,只要把--it去掉,换成 -d就行了例如: docker run -d -p 1238:1238 --name=register register

oliusha

1、在docker里跑的register容器,每次启动,ip地址都是会变的吧?
2、请问在docker swarm里能跑吗?

  • 暂无评论

adminv

1444
积分
0
获赞数
0
粉丝数
2021-08-06 加入