Docker for Windows打包制作tomcat镜像并部署java web项目

转自 https://blog.csdn.net/ivyusing/article/details/79153017

项目基本情况

我用的是普通的java web项目,其中采用了struts框架,没有main函数,Makefile实在写不出来,因此spring框架的那种打包docker的方式并不适用。 
这里写图片描述 
开发工具用的是MyEclipse10,平常在本地运行的时候就是部署到服务器上,将服务器run起来就可以通过端口和项目名访问,如localhost:8080/demo 
这里写图片描述

准备工作

1、下载安装Docker for Windows

去官网直接下载exe安装full version就可以了。

2、第一次使用Docker for Windows

下载好之后,打开Docker QuickStart Terminal,第一次打开,会说找不到boot2docker.iso,需要下载安装。不知道是网络原因还是墙的原因,总是下到一半就失败了,因此可以不在docker工具里面下载,关掉docker工具,在外面用浏览器打开 
https://github.com/boot2docker/boot2docker/releases 找到最新版本下好先,再复制到C:\Users\user.docker\machine\cache\里面,重新打开Docker QuickStart Terminal。Waiting for an IP一会儿后,看到下面的小鲸鱼才是可以开始用了。 
这里写图片描述

3、注册一个docker账户

要上传你自己的docker容器,首先需要有自己的docker账户。 
https://hub.docker.com/ 
这个网站后面会经常用到,查看自己的容器还有一些公共的容器都在这看。 
我注册的时候Sign up键一直点不了注册不了,哪个浏览器都不管用,实在没办法翻了墙试,原来是有一个验证身份的插件加载不了所以没法注册(听说rp好的不翻墙也刷出来了)就是一个类似12306那种验证码,所以如果注册不了,估计就是要翻墙的节奏。

开始打包镜像

1、将java项目导出war包

打开我的MyEclipse,将项目打包成war包。这个不难。 
鼠标在项目名点右键,选择“Export”,出现下图,选择“WAR”,下一步只要再填个保存路径就可以导出了。 
这里写图片描述

2、制作单纯Tomcat镜像

在本地的时候,我的项目是要在Tomcat服务器上跑的,所以制作镜像时,也必须要有Tomcat,这些官方容器库都有的,所以直接从网上下载下来就行,打开Docker QuickStart Terminal,输入指令(这里我用的是Tomcat7)

docker pull tomcat:7
  • 1

相当于下载了一个tomcat镜像到我本地了。使用指令 docker images 可以看到我本地的镜像们。 
这里写图片描述
在Docker工具里执行指令让镜像跑起来,跑起来的就可以叫做容器了。 
8080:8080,前一个8080代表的是容器的端口,后一个8080代表的是Tomcat本身使用的端口。

docker run -d -p 8080:8080 tomcat
  • 1

用指令先查看是不是成功启动了。

docker ps
  • 1

这里写图片描述
若想直观一点,在浏览器直接打开 分配的IP:8080,就可以看到亲爱的大脸猫了。(分配的IP在一开始启动Docker后出现的,8080是我前面定义的端口)

至此一个单纯的Tomcat镜像在本地制作好了。 
跟在本地部署一样,一个新的项目,只要把war包放在tomcat里的webapps文件夹里,tomcat会自动解压部署的。因此重点是要知道我刚刚下载的tomcat7的镜像目录在哪。

3、部署java web项目到Tomcat镜像里

网上查半天pull下来的东西存放在哪,说在什么usr/local/…的地方,在实际上我在自己电脑根本找不到这文件夹。输入指令docker info也可以看到root地址,但我也找不到物理位置,遂寻求别的出路。能不能将war包用指令复制到webapps里面去。 
下面是经过实践可行的解决办法: 
(1)保证Tomcat镜像已经run起来了,记住Container ID,等下有用。 
(2)假设我的war包放在了C:\Users\user\Desktop\jars\里面,在保证(1)之后,获得我的Tomcat的Container ID为474df972e59d,执行指令

docker cp C:/Users/user/Desktop/jars/demo.war 474df972e59d:/usr/local/tomcat/webapps
  • 1

就能把war包弄进去了 
/usr/local/tomcat/webapps这个地址,如果失败了可以这样验证,先exec进入到容器中

docker exec -it 474df972e59d /bin/bash
  • 1

然后就跟普通命令行指令一样,可以ls看看目录下所有文件,然后cd打开再ls,直到找到webapps,然后核对路径。 
这里写图片描述 
如果是在cp war包之后exec进入容器查看webapps,可以看到出现了刚刚部署的demo文件夹。 
要退出容器就输入exit。 
我还是喜欢可视化的操作,到浏览器,输入 分配的IP:8080/demo ,就可以打开项目的默认页面了。

不要太高兴了,事情还没完!这只是个本地的容器,如果关掉了容器,一切就会还原了,如果后面还要上传到docker仓库或者使用其他容器管理平台的的,这还没完呢。

刚才对容器进行了修改(copy了war包),首先要提交修改,输入指令(474df972e59d是容器ID,ivusing/demo,‘/’前面是自己的docker账号名,后面是给容器取的名字)

docker commit 474df972e59d ivyusing/demo
  • 1

如果输入 docker images,可以看到出现一个新的镜像了。 
提交完后,要push上仓库,在这之前,要登录自己的docker账户 
还是在docker工具输入指令:

docker login
  • 1

登录后,上传到仓库,输入指令:(latest是标签,docker images后TAG一栏就是了)

docker push ivyusing/demo:latest
  • 1

至此,其他人只要docker pull ivyusing/demo,都可以下载这个容器啦~

关于数据库

BUT,数据库得另外弄一个容器。因为我用的是Rancher容器管理平台直接建立的mysql容器,步骤有一点不一样,就不详细写了。原理是一样的,先下一个mysql官方容器,docker pull mysql,然后再设置数据库的用户名密码、端口,这时候只是一个空的数据库,再把自己的表导进去,再保存上传镜像。 
记得把原项目中数据库的端口改成mysql容器设置的端口!!!

猜你喜欢

转载自blog.csdn.net/qq_34924407/article/details/81386031