用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启动成功
测试下项目的登录功能 成功登录 并返回数据!
可能写的有点乱 有什么不清楚的地方 可以留言告诉我 谢谢!