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,重新创建时所有项目还是存在的

目录
相关文章
|
数据采集 存储 Docker
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
566 7
深入理解Docker:为你的爬虫项目提供隔离环境
|
运维 网络安全 持续交付
IDEA+Docker 远程一键部署项目:技术干货分享
【10月更文挑战第4天】在现代软件开发中,快速、可靠、自动化的部署流程是提升开发效率和运维质量的关键。IDEA(IntelliJ IDEA)作为Java开发者首选的IDE,结合Docker这一轻量级容器化技术,能够实现远程一键部署项目,极大地简化了开发到生产的流程。今天,我将和大家分享这一组合在工作学习中的实际应用和技术干货。
1542 3
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
533 64
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
2084 1
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
435 25
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
274 23
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
458 22
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
576 3
实战~如何组织一个多容器项目docker-compose
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
606 7
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2474 10