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

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-image
    build:
      context: .
      dockerfile: Dockerfile.project1
    ports:
      - "9090:9090"
    container_name: project1-container
    volumes:
      - ./project1/logs:/usr/local/tomcat/logs

  project2:
    image: project2-image
    build:
      context: .
      dockerfile: Dockerfile.project2
    ports:
      - "9091:9091"
    container_name: project2-container
    volumes:
      - ./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.kler.cn/a/505353.html

相关文章:

  • [c语言日寄]精英怪:三子棋(tic-tac-toe)3命慢通[附免费源码]
  • Android 调用系统服务接口获取屏幕投影(需要android.uid.system)
  • Qwins的使用
  • 软件测试 —— Selenium常用函数
  • WINFORM - DevExpress -> gridcontrol ---->控件(ColumnEdit控件)
  • MATLAB语言的函数实现
  • rtthread学习笔记系列--24 waitqueue
  • 在 Docker 中安装并运行三个 MySQL 数据库
  • 快速上手 HarmonyOS 应用开发
  • np.gradient() 获取单个,一维,二维坐标点的梯度值
  • Oracle分析工具-Logminer手动指定归档文件
  • Tabby - 开源的自托管 AI 编码助手
  • 计算机网络速成
  • centos 7 CA认证中心
  • ChatGLM:从GLM-130B到GLM-4全系列大语言模型
  • ARM与x86:架构对比及其应用
  • AWS云计算概览(自用留存)
  • 适配器模式案例
  • 【2024年华为OD机试】 (B卷,100分)- 太阳能板最大面积(Java JS PythonC/C++)
  • Docker实战案例:构建并部署一个Node.js Web应用
  • Python数据处理(一)- Pandas 安装与数据结构介绍
  • 【时时三省】(C语言基础)经典笔试题3
  • 1Spark 基础
  • 信息系统安全设计方案,软件系统安全设计总体解决方案(Word原件)
  • docker-compose和docker-harbor
  • 大模型训练_硬件微调知识增强