当前位置: 首页 > news >正文

linux环境使用docker部署多个war项目

如果你的需求是在一个服务器上部署多个Tomcat项目,并且每个项目需要独立运行,可以通过以下方式实现:


1. 使用不同的端口

每个Tomcat项目可以使用不同的端口号(如9090、9091、9092等),并通过Docker容器分别运行。以下是具体步骤:

1.1 修改每个项目的端口

在每个项目的Dockerfile中,修改Tomcat的端口号。例如:

  • 项目1的Dockerfile

    FROM tomcat:9.0
    COPY project1.war /usr/local/tomcat/webapps/ROOT.war
    EXPOSE 9090
    RUN sed -i 's/port="8080"/port="9090"/' /usr/local/tomcat/conf/server.xml
    CMD ["catalina.sh", "run"]
    
  • 项目2的Dockerfile

    FROM tomcat:9.0
    COPY project2.war /usr/local/tomcat/webapps/ROOT.war
    EXPOSE 9091
    RUN sed -i 's/port="8080"/port="9091"/' /usr/local/tomcat/conf/server.xml
    CMD ["catalina.sh", "run"]
    
1.2 构建镜像

分别为每个项目构建Docker镜像:

docker build -t project1-image -f Dockerfile.project1 .
docker build -t project2-image -f Dockerfile.project2 .
1.3 运行容器

使用不同的端口运行容器:

docker run -d -p 9090:9090 --name project1-container project1-image
docker run -d -p 9091:9091 --name project2-container project2-image
1.4 访问项目
  • 项目1:http://<your-server-ip>:9090
  • 项目2:http://<your-server-ip>:9091

2. 使用Docker Compose管理多个项目

如果你需要同时管理多个Tomcat项目,可以使用docker-compose.yml文件来简化操作。

2.1 创建docker-compose.yml

以下是一个示例docker-compose.yml文件,用于部署两个Tomcat项目:

version: '3'
services:project1:image: project1-imagebuild:context: .dockerfile: Dockerfile.project1ports:- "9090:9090"container_name: project1-containervolumes:- ./project1/logs:/usr/local/tomcat/logsproject2:image: project2-imagebuild:context: .dockerfile: Dockerfile.project2ports:- "9091:9091"container_name: project2-containervolumes:- ./project2/logs:/usr/local/tomcat/logs
2.2 启动所有服务

docker-compose.yml文件所在目录下运行以下命令:

docker-compose up -d
2.3 访问项目
  • 项目1:http://<your-server-ip>:9090
  • 项目2:http://<your-server-ip>:9091

3. 使用Nginx反向代理

如果你希望所有项目都通过同一个端口(如80)访问,可以使用Nginx作为反向代理,将请求转发到不同的Tomcat容器。

3.1 创建Nginx配置文件

创建一个Nginx配置文件(如nginx.conf),配置反向代理规则:

server {listen 80;location /project1/ {proxy_pass http://project1-container:9090/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}location /project2/ {proxy_pass http://project2-container:9091/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
3.2 创建Nginx容器

使用以下命令运行Nginx容器:

docker run -d -p 80:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf --name nginx-container nginx
3.3 访问项目
  • 项目1:http://<your-server-ip>/project1
  • 项目2:http://<your-server-ip>/project2

4. 使用共享数据卷

如果你希望多个Tomcat项目共享某些数据(如配置文件、日志等),可以使用Docker卷(Volume)来实现。

4.1 创建共享卷

创建一个共享卷:

docker volume create shared-data
4.2 挂载共享卷

在运行容器时挂载共享卷:

docker run -d -p 9090:9090 -v shared-data:/shared-data --name project1-container project1-image
docker run -d -p 9091:9091 -v shared-data:/shared-data --name project2-container project2-image
4.3 在项目中使用共享数据

在项目中,可以通过/shared-data路径访问共享数据。


5. 总结

  • 不同端口:每个项目使用不同的端口,适合简单的多项目部署。
  • Docker Compose:适合管理多个容器,简化部署流程。
  • Nginx反向代理:适合通过统一端口访问多个项目。
  • 共享数据卷:适合需要共享数据的场景。

根据你的需求选择合适的方式。如果还有其他问题,请随时告诉我!

http://www.lryc.cn/news/521548.html

相关文章:

  • 【react】使用antd Table渲染数据遇到的报错问题
  • JVM之垃圾回收器G1概述的详细解析
  • 1.15寒假作业
  • RK356x bsp 5 - 海华AW-CM358SM Wi-Fi/Bt模组调试记录
  • 支持Google Analytics快捷添加的CMS:费用与部署形式详解
  • CSS | 实现三列布局(两边边定宽 中间自适应,自适应成比)
  • fpga系列 HDL:跨时钟域同步 双触发器同步器
  • 金融项目实战 05|Python实现接口自动化——登录接口
  • 《HTML在网络安全中的多面应用:从防范攻击到安全审查》
  • Linux网络 | 学习传输层网络协议之UDP(短篇)
  • iOS - 内存屏障的使用场景
  • MySQL 8.0 新特性详解与实用示例
  • 【STM32-学习笔记-5-】ADC
  • TY1801 反激变换器PWM GaN功率开关
  • Jenkins安装、插件下载及构建环境配置详解
  • ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
  • Ubuntu把应用程序放到桌面
  • 什么是端口映射
  • 数据结构《MapSet哈希表》
  • 【QT】QComboBox:activated信号和currentIndexChanged信号的区别
  • 【Block总结】ELGCA模块,池化-转置(PT)注意力和深度卷积有效聚合局部和全局上下文信息
  • MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解
  • 基于springboot+vue+微信小程序的宠物领养系统
  • 如何使用策略模式并让spring管理
  • react中hooks之useRef 用法总结
  • 使用 Docker 部署 Java 项目(通俗易懂)
  • 如何在Ubuntu上安装和配置Git
  • FPGA 21 ,深入理解 Verilog 中的基数,以及二进制数与十进制数之间的关系( Verilog中的基数 )
  • 【redis】redis-cli命令行工具的使用
  • 使用Matplotlib显示中文的方法