You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一机器同一端口运行两个Tomcat部署的Java应用?

同一机器同端口运行两个Tomcat Java应用的Docker实现方案

完全可以通过Docker实现,核心思路是用反向代理容器作为流量入口,根据请求路径/域名将流量转发到不同的Tomcat应用容器,避免直接端口冲突。以下是具体实现步骤:

1. 准备应用镜像

将两个Java应用分别打包成包含Tomcat的Docker镜像,比如命名为my-app1:v1和my-app2:v1,每个镜像内的Tomcat默认使用容器内部的8080端口(无需修改)。

2. 配置反向代理(以Nginx为例)

创建Nginx配置文件nginx.conf,通过路径规则区分两个应用:

server {
    listen 80;

    # 转发到第一个Tomcat应用
    location /app1/ {
        proxy_pass http://app1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 转发到第二个Tomcat应用
    location /app2/ {
        proxy_pass http://app2:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

这里的app1和app2是后续Docker容器的名称,同一Docker网络内可直接通过容器名访问。

3. 用Docker Compose编排容器

创建docker-compose.yml来统一管理三个容器(两个应用+一个代理):

version: '3'
services:
  app1:
    image: my-app1:v1
    networks:
      - app-network

  app2:
    image: my-app2:v1
    networks:
      - app-network

  nginx-proxy:
    image: nginx:alpine
    ports:
      - "80:80" # 宿主机80端口映射到Nginx容器的80端口
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

自定义网络app-network确保容器间可以互相访问,避免依赖默认网络的不确定性。

4. 启动与验证

执行以下命令启动所有容器:

docker-compose up -d

启动完成后,通过以下地址访问应用:

  • 第一个应用:http://localhost/app1/
  • 第二个应用:http://localhost/app2/
    两个应用共享宿主机的80端口,由Nginx负责流量分发。

可选:域名区分方案

如果想用不同域名访问,修改Nginx配置为多server块即可:

server {
    listen 80;
    server_name app1.example.com;

    location / {
        proxy_pass http://app1:8080/;
        proxy_set_header Host $host;
    }
}

server {
    listen 80;
    server_name app2.example.com;

    location / {
        proxy_pass http://app2:8080/;
        proxy_set_header Host $host;
    }
}

只需在本地hosts文件或DNS服务器中配置域名指向宿主机IP,即可通过app1.example.com和app2.example.com访问对应应用。

内容的提问来源于stack exchange,提问作者arpit joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:47:26