使用 Tomcat 作为后端服务
步骤1:修改 docker-compose.yml
文件
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- backend
backend:
image: tomcat:9 # 使用 Tomcat 官方镜像
container_name: tomcat-backend
expose:
- "8080" # Tomcat 默认监听 8080 端口
volumes:
- ./webapps:/usr/local/tomcat/webapps # 将本地 webapps 目录挂载到 Tomcat 容器
解释:
backend
服务现在使用了tomcat:9
官方镜像。expose: 8080
表示 Tomcat 容器内部监听 8080 端口(它不会直接暴露到宿主机,但 Nginx 容器可以通过该端口访问)。volumes
挂载了一个本地的webapps
目录到 Tomcat 容器中的/usr/local/tomcat/webapps
,这是 Tomcat 默认存放 Web 应用的地方。你可以将你的.war
文件放在webapps
目录中,Tomcat 会自动部署它。
步骤 2: 配置 Nginx
nginx/default.conf
文件中的配置无需更改,继续保持如下配置,确保 Nginx 将请求转发到 Tomcat:
server {
listen 80;
location / {
proxy_pass http://backend:8080; # 将请求转发到 Tomcat 服务的 8080 端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
步骤 3: 启动服务
确保你已经在项目目录中,然后执行以下命令启动 Docker Compose:
docker-compose up -d
这会启动 Tomcat 和 Nginx 容器,Tomcat 会监听 8080 端口,Nginx 会将请求反向代理到 Tomcat 上。
步骤 4: 测试
你可以通过浏览器访问主机的 IP 地址或 localhost
来测试反向代理:
curl http://localhost
Nginx 会将请求转发给 Tomcat,Tomcat 会根据你的应用返回响应。
步骤 5: 部署应用
如果你有一个 Web 应用(例如 .war
文件),可以将它放在项目中的 webapps
目录下,Tomcat 会自动部署这个应用。你可以使用 docker-compose down
停止服务,然后通过以下命令重新启动:
docker-compose up -d
Tomcat 会重新加载并部署新的应用。
总结
后端服务:使用 Tomcat 镜像并将其配置为监听 8080 端口。
Nginx 反向代理:将所有请求代理到 Tomcat 上,通过
proxy_pass
实现。应用部署:通过挂载本地
webapps
目录,将.war
文件部署到 Tomcat 中。
这样,Tomcat 和 Nginx 就可以很好地结合使用,Nginx 作为反向代理,Tomcat 作为后端应用服务器。
评论区