一zookeeper服务器的搭建
安装
#拉取镜像
docker pull zookeeper
#运行容器
docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:latest
进行到这一步的linux的容器运行情况,应有redis,mysql,tracker,storage,zookeeper
连接使用zookeeper
服务器配置安全组,暴露2081端口
然后dubbo服务yml配置
#当前服务/应用的名字
dubbo:
application:
name: user
#注册中心的协议和地址
registry:
address: 193.112.249.143:2181 #这个端口应该是服务器的外网ip
protocol: zookeeper
#通信规则(通信协议和端口口)
protocol:
name: dubbo
port: 20882 #每个服务的协议端口不同
#连接监控中心
monitor:
protocol: register
启动单个服务进行测试服务注册
二.duboo服务部署
博主使用的是MobaXterm工具连接服务器的。同时可以上传文件,比较方便
1.上传jar包至服务器,并编写Dockerfile文件
Dockerfile文件内容
# 加载java8进项
FROM java:8
# 作者
MAINTAINER eangulee <[email protected]>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /home/tmp
#注意你的包名
# 将jar包添加到容器中并更名为app.jar
ADD app-1.0-SNAPSHOT.jar app.jar
# 运行jar包
#注意你的包名
RUN bash -c 'touch /app.jar'
#注意你的包名
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
2.然后进入Dockerfile的文件目录下构建镜像
#image-name 是你要取的镜像名字
docker build -t images-name .
#查看构建的镜像
docker images
大概如下
3.运行dubbo服务容器
重点:
- 注册ip一定是外网ip
- 不同服务器访问服务,一定要使dubbo协议端口对另一台机器暴露。比如 ‘服务提供者-1’ 在linux-1上,zookeeper和‘服务消费者-1’在linux-2上,消费者需要调用服务提供者-1,则‘服务提供者-1’ 的linux-1上需要对linux-2暴露它的dubbo协议端口。
docker run -d --name serviceName -e DUBBO_IP_TO_REGISTRY=30.5.97.6 -e DUBBO_PORT_TO_REGISTRY=20881 -p 2001:2001 -p 20881:20881 imagesName
命令说明
-d 后台运行
--name 设置启动容器的名字
-e DUBBO_IP_TO_REGISTRY=30.5.97.6 这个是设置向zookeeper祖册服务的ip地址,一定要是当前服务所在机器的公网ip地址,不然不同服务器之间会访问不了,因为默认的本机的内网ip地址
-e DUBBO_PORT_TO_REGISTRY=20881 这个是协议的注册端口
-p 2001:2001 -p 20881:20881 对外暴露server端口和dubbo协议端口
serviceName 容器名称
imagesName 要运行的镜像
运行后通过
docker logs -f 容器id或者容器名
查看运行日志,日志输出格式就是项目运行的格式,都是info就对了
后面重复步骤搭建每个dubbo服务镜像,并启动每个服务,建议是先启动单独服务,需要依赖其他服务的后启动,逐个启动便可以在本机上启动前端去测试了。注意服务的安全组哦~~
下面附上我的项目全部启动后的结果
服务部署机器
各种服务器部署和数个dubbo服务部署机器
温馨提示: 服务器可以从阿里云或者腾讯云获取10块钱每月的学生机器,亚马逊云也是有学生机器的。
本博主是分别在两个地方各买一台才勉强配置完的~~~
后端项目到此部署完了,下一步是如何用docker部署nginx和前端项目的,请看我下一篇文章:nginx部署vue项目,和博主的项目介绍