此教程在CentOS7操作系统,基于Tomcat8制作了一个部署用户名密码为deploy的tomcat镜像,镜像地址:https://cloud.docker.com/repository/docker/as00v1/tomcat-deploy/general,欢迎试用~
一、准备文件
首先,我们在任意位置新建目录,比如我的:
mkdir qblog
然后,从Tomcat官网下载tomcat压缩包,解压后找到以下文件,复制到qblog目录中:
- conf目录中tomcat-users.xml配置文件
- conf目录中server.xml配置文件
- bin目录的catalina.sh文件
- 任意你想修改并添加到镜像里的文件
二、修改文件
1.添加用户
由于我们要制作一个支持远程部署的tomcat镜像,所以我们修改tomcat-users.xml文件如下:
vim tomcat-users.xml
一般在最下方,找到role和user节点,修改或添加以下内容:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="deploy" password="deploy" roles="manager-script"/>
<user username="gui" password="gui" roles="manager-gui"/>
其中,manager-gui用户组代表可以通过浏览器访问管理页面的用户,manager-script用户组代表可以通过脚本访问的用户组,此时我创建了两个用户,使用deploy用户进行部署,gui用户可以登录管理页面
2.新增配置文件
新建一个名为manager.xml的文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
目的是允许所有IP进行访问,此处未深入研究,有兴趣可以继续。
3.编辑server.xml文件
一般tomcat常用的配置如端口号、编码、线程数等都在server.xml配置文件,有兴趣可以修改内容,此时不做修改,使用默认配置。
4.编辑catalina.sh文件
编辑启动脚本为了解决tomcat官方镜像的时区设置问题,我们要在catalina.sh文件中找到启动设置的变量,并在其后面添加参数-Duser.timezone=GMT+08
,如图所示:
5.编辑Dockerfile文件
制作docker镜像脚本文件,这个文件相当于镜像的源码,首先新建文件:
vim Dockerfile
然后将一下内容放到文件中:
FROM tomcat:8
MAINTAINER "jiayong <superjiayong@qq.com>"
ADD server.xml /usr/local/tomcat/conf/
ADD tomcat-users.xml /usr/local/tomcat/conf/
ADD manager.xml /usr/local/tomcat/conf/Catalina/localhost/
ADD catalina.sh /usr/local/tomcat/bin/
#设置时区为东八区时间
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
CMD ["catalina.sh", "run"]
思路就是,以官方提供的tomcat8镜像为基础,向容器中添加我们刚才配置好的文件。保存退出。
三、构建镜像
执行命令,构建镜像:
docker build -t tomcat8-deploy:1.0 .
-t代表指定镜像的名称和版本号
构建镜像需要一定时间,构建完成后可以使用docker images
命令查看镜像:
四、推送到docker hub
首先去docker.io注册docker账户,然后回来,将我们刚才的镜像改名,命名规则大致是 你的仓库名/镜像名:版本,比如我的:
docker tag tomcat8-depoly:1.0 as00v1/tomcat-deploy:1.0
然后登陆账户:
docker login
按照提示输入用户名、密码后显示登陆成功即可:
最后执行:
docker push as00v1/tomcat-deploy
返回签名就是推送成功:
此镜像的地址是:https://cloud.docker.com/repository/docker/as00v1/tomcat-deploy/general,可以下载使用~