将一个javaweb应用部署到docker上
首先 将配置写到Dockerfile 文件里面
然后执行 docker build 构建镜像
举例:在docker上部署一个博客系统
(博客系统 http://jpress.io )
https://gitee.com/fuhai/jpress/tree/alpha/
具体就是,将下载好的war包,放到docker里面的tomcat目录下
先把war包下载好
然后 加载tomcat镜像
docker pull hub.c.163.com/library/tomcat:latest 网易云的公共docker仓库里面的tomcat
然后创建Dockerfile
from hub.c.163.com/library/tomcat:latest //以tomcat镜像为基础 from表示继承自哪个镜像
MAINTAINER laixiaoxing [email protected] //容器所有者
COPY jpress.war /usr/local/tomcat/webapps //将 jpress.war 放到tomcat的webapps目录下 这样启动之后就可以访问了
docker build . // . 表示dockerfile所在的目录 也可以通过 -f Dockerfile 文件的位置 docker build -f /path/to/a/Dockerfile .
如果出现个问题,就是daemon过大的问题
因为 Docker Client会默认发送Dockerfile同级目录下的所有文件到Dockerdaemon中
此时我们的dockerfile 在根目录下 ,里面有很多东西
解决方案就是 将dockerfile 放到单独的目录里去
单独建立了一个app文件夹
将dockerfile放进去,并将我们刚刚下好的war文件也放进去
再次build 成功了
总结:写好dockerfile文件, 该文件最好放在一个空的目录下,因为build的时候会读取dockerfile所在的整个目录,然后dockerfile里面 设置我们需要的东西
比如在这里,我们需要把war包放到tomcat下面,所以copy jpress.war /usr/local/tomcat/webapps (该路径为tomcat存放web应用的路径)
注意! 这里 jpress需要和dockerfile放到一个目录下,不然会报找不到文件的错误。
执行docker images 查看下镜像 发现 那个IMAGEID为 50b099842e3d就是我们刚刚建立的镜像
给它取个名字 重新build -t 表示新增个tag名称
$ docker build -t jpress:latest .
再次 docker images 查看一下
发现好了。