Docker自定义Tomcat,实现远程部署项目和管理

简介:

Dockfile自定义Tomcat镜像

1. 拷贝官方镜像中的配置文件出来

# 运行官方镜像,为了得到官方配置文件tomcat_user.xml和server.xml
docker run -itd --restart=always --name=tomcat8  \
    -v tomcat_webapps:/usr/local/tomcat/webapps \
    -p 8080:8080 tomcat:8.5.32 
    
# 复制容器中conf/tomcat-user.xml和server.xml到当前目录下
docker container cp tomcat8:/usr/local/tomcat/conf/tomcat-users.xml .
docker container cp tomcat8:/usr/local/tomcat/conf/server.xml .

2. 修改配置文件conf/tomcat-user.xml和server.xml,创建manager.xml

<!--修改server.xml,指定编码格式为UTF-8-->
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" />

<!--修改tomcat-users.xml,添加用户和规则-->
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<!--远程部署需要standard和manager-script角色-->
<role rolename="standard"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="admin,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>
<!--远程部署用户-->
<user username="tomcat" password="tomcat" roles="standard,manager-script"/>

<!--创建manager.xml,输入以下内容,使tomcat可以远程部署。-->
<?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>

3. 编写Dockfile

FROM tomcat:8.5.32
MAINTAINER guxiaotu <524343695@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/manager.xml
# 删除先前的tomcat容器和tomcat镜像
docker rm -f tomcat8
docker rmi tomcat:8.5.32

# 构建自定义的tomcat镜像
docker build -t guxiaotu/tomcat:8.5.32 .
# 构建自定义的最新版
docker build -t guxiaotu/tomcat .

# 利用自定义的tomcat镜像创建容器,自动建立映射volume卷tomcat_webapps
docker run -itd --restart=always --name=tomcat8  \
    -v tomcat_webapps:/usr/local/tomcat/webapps \
    -p 8080:8080 guxiaotu/tomcat

4. 可以将构建好的镜像发布到自己的仓库中

# 登录自己的dockerhub仓库,输入用户名和密码
docker login
# 发布镜像到自己的仓库
docker push guxiaotu/tomcat:8.5.32
docker push guxiaotu/tomcat:latest

5. 使用tomcat7-maven-plugin部署到远程tomcat服务器

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://ip:8080/manager/text</url>
        <username>tomcat</username>
        <password>tomcat</password>
    </configuration>
</plugin>   

6. 运行maven命令(可以结合Jenkins)

mvn clean package tomcat7:redeploy -Dmaven.test.skip=true

备注:我已经打包好guxiaotu/tomcat镜像在docker hub仓库中,最新版latest为8.5.32。必须使用参数--restart=always,否则有时候容器会挂掉。不过使用了volume卷tomcat_webapps,重新创建时所有项目还是存在的

目录
相关文章
|
2月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
43 0
|
23天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
97 0
|
3月前
|
Java 持续交付 Docker
Docker 项目如何使用 Dockerfile 构建镜像?
Docker 简介:讲述 Docker 的起源、它是如何革新现代软件开发的,以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。
|
16天前
|
关系型数据库 MySQL 数据库
docker自定义安装mysql 5.7
docker自定义安装mysql 5.7
23 0
|
1月前
|
NoSQL Java Redis
利用Docker部署一个简单的springboot项目
利用Docker部署一个简单的springboot项目
70 2
|
1月前
|
JavaScript Java jenkins
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
85 0
|
1月前
|
数据可视化 应用服务中间件 nginx
如何查看docker 项目的配置文件
【2月更文挑战第21天】
111 1
|
1月前
|
Java 网络安全 开发者
【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)
【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)
44 0
|
2月前
|
资源调度 JavaScript 前端开发
如何使用 Docker 来部署 Vue 项目?
【2月更文挑战第8天】
90 2
|
2月前
|
Java 应用服务中间件 程序员
互联网大厂为什么禁止SpringBoot项目使用Tomcat?
在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。
50 1
互联网大厂为什么禁止SpringBoot项目使用Tomcat?