用docker部署分布式项目

docker上面部署dubbox的分布式应用,tomcat做web容器

原文位置:https://blog.csdn.net/lizhenyi111/article/details/81776522

这里只在一台虚拟机上面演示,用的是cantos7,用两个docker容器部署两个应用

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

这里安装docker就不在做介绍,可以参见文档http://www.runoob.com/docker/centos-docker-install.html

安装好docker后,首先拉取tomcat的镜像

docker search tomcat

下载stars最高的那个

docker pull docker.io/tomcat

下载完成之后 可以docker images查看本地所有的镜像

接下来要做准备工作

1.上传tomca压缩包到服务器,解压两个tomcat到服务器,这里安装两个tomcat的目的主要是为了让等下容器里面的tomcat映射本地的tomcat方便后期操作

tar -zxvf apache-tomcat-8.0.52.tar.gz

给解压后的tomcat文件夹修改名字

首先我这边先上传web端war包到 第一个tomcat的webapps下面

然后上传service端到第二个tomcat的webapps下面

我上传的这个项目是用的dubbo框架 所有还需要在本地 安装zookeeper

2.安装zookeeper 参考这边文章https://www.cnblogs.com/zuolun2017/p/8186254.html

3.接下就开始构建我们的docker容器

构建第一个容器:

命令:docker run -it --name charge-service --net=host -v /usr/local/apache-tomcat-8.0.52/webapps:/usr/local/tomcat/webapps -v /usr/local/apache-tomcat-8.0.52/conf/server.xml:/usr/local/tomcat/conf/server.xml -d docker.io/tomcat

--it:运行一个在后台执行的容器,同时,还能用控制台管理

--name:创建容器的名字

--net=host:注意这个是关键 ,--net=host意思是让容器跟宿主机使用相同的ip,容器不会虚拟出自己的网卡,ip,这里配置这个的原因是因为,如果你采用默认模式创建容器,就会连不到你在虚拟机启动的zookeeper

-v:该命令等于是linux命令的软连接 /usr/local/apache-tomcat-8.0.52/webapps:/usr/local/tomcat/webapps.冒号左边是虚拟机的tomcat的war包存放地址,右边是容器内的war包存放在tomcat中的地址,意思就是让容器内的tomcat的war包存放地址,指向虚拟机的tomcat的存放地址,这样容器内的tomcat启动的时候实际上启动的是在虚拟机存放的war包

-v /usr/local/apache-tomcat-8.0.52/conf/server.xml:/usr/local/tomcat/conf/server.xml  这里同上 是为了指向虚拟机的tomcat的配置文件 ,这样就可以直接在本地该配置 不需要动容器内的tomcat

-d docker.io/tomcat :-d 的意思是用docker.io/tomcat镜像创建容器,也就是之前咱们下载的tomcat镜像

执行完会返回一个唯一的id

docker logs -f 容器id 查看tomcat启动日志

OK,启动完成

接下来创建第二个容器,创建过程同上类似,只不过创建时指向的本地tomcat不一样

docker run -it --name charge-service --net=host -p 8082:8080 -v /usr/local/apache-tomcat-8.0.52/webapps:/usr/local/tomcat/webapps -d docker.io/tomcat

第二个容器 我没有指向本地的配置文件是因为这个采用默认的就可以了 

这时启动的话 会报错 端口冲突 ,所以要修改 第一个容器指向的本地tomcat配置文件 

修改配置文件参考这边文章https://blog.csdn.net/kzdwts/article/details/79368188

修改完之后 重启一下容器就可以了

dokcer stop 容器id:停止容器

docker start 容器id: 启动容器

docker restatrt 容器id :重启容器

service 启动成功

web启动成功

测试下项目的登录功能 成功登录 并返回数据!

可能写的有点乱 有什么不清楚的地方 可以留言告诉我 谢谢!

猜你喜欢

转载自blog.csdn.net/qq_32649581/article/details/83861210