使用docker部署第一个war应用
随着docker等容器技术的成熟,使得dev-ops的开发理念得到落实。公司内部提供的容器都是封装好的,于是决定尝试自己在docker上部署第一个应用来练习练习,还是有不少坑的。前提是docker已经在本地安装了,具体安装步骤可以上官网查看。 1、拉取最新的tomcat镜像到本地 sudo docker pull tomcat 2、基于Dockerfile创建镜像文件dockerfile
随着docker等容器技术的成熟,使得dev-ops的开发理念得到落实。公司内部提供的容器都是封装好的,于是决定尝试自己在docker上部署第一个应用来练习练习,还是有不少坑的。前提是docker已经在本地安装了,具体安装步骤可以上官网查看。
1、拉取最新的tomcat镜像到本地
sudo docker pull tomcat
2、基于Dockerfile创建镜像文件
dockerfile可以帮助我们创建自定义的镜像,本文比较简单直接基于最新的tomcat镜像,当然tomcat镜像也可以自定义(tomcat版本、jdk版本)。
新建Dockerfile文件,并将需要部署的war包放在相同文件夹下。
Dockerfile文件内容如下:
FROM tomcat #基础镜像
MAINTAINER "test <yanyuan904@163.com>" # 套路
ENV DIR_WEBAPP /usr/local/tomcat/webapps/ # 定义变量、后续会使用 ,具体路径可以先启动容器然后进入进行查看
RUN rm -rf $DIR_WEBAPP/* #删除webapp下所有文件,因为当前应用作为根应用
ADD virtualShop-man.war $DIR_WEBAPP/ROOT.war
RUN unzip $DIR_WEBAPP/ROOT.war -d $DIR_WEBAPP/ROOT/
CMD ["catalina.sh", "run"]
构建镜像文件:
sudo docker build -t hulk-tomcat .
执行成功后本地会多出一个镜像
3、运行镜像
sudo docker run -d -p 8888:8080 hulk-tomcat
容器启动正常,但是应用报错了。恩,第一次哪能这么顺利。查看日志是差相关host配置。配置host有多种方式,启动时配置或者修改容器配置(不推荐),这里介绍通过与主机共享host文件的方式:
(停止刚启动的容器并删除)
sudo docker run -v /etc/hosts:/etc/hosts -d -p 8888:8080 hulk-tomcat
容器启动之后发现应用还是报错了: ??: Name or service not known(??就是容器的id)。在容器里执行 hostname也会提示这个错误。。这是因为没有设置容器hostname,默认就使用了容器id 。
sudo docker run -v /etc/hosts:/etc/hosts -h ubuntu -d -p 8888:8080 hulk-tomcat
给容器hostname命名为ubuntu ,因为宿主机器叫这个然后hosts文件有ubuntu的配置(共享host)。
启动正常可以访问!!!
恩,接下来就是nginx相关的配置了,监听8888端口就可以啦。还有一些细节问题 比如打印日志的时区不对等
更多推荐
所有评论(0)