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

Azure WebApps Tomcat应用更新Docker镜像后无法自动重启报HTTP 404

解决方案

核心问题定位

微软更新后的mcr.microsoft.com/azure-app-service/tomcat:8.5-jre8_220406005815镜像调整了应用目录同步逻辑,不再自动将/home/site/wwwroot/webapps/下的自定义子目录(如wholesale)复制到容器内的/usr/local/tomcat/webapps/路径,仅默认加载ROOT应用,导致部署成功后Tomcat无法识别你的应用。


方案1:直接映射部署目录(推荐)

无需复制文件,让Tomcat直接加载持久化存储中的应用目录:

  • 登录Azure门户,进入你的App Service,打开配置 -> 路径映射
  • 点击添加虚拟应用程序:
    • 虚拟路径:/wholesale
    • 物理路径:site/wwwroot/webapps/wholesale
    • 勾选应用程序选项
  • 保存配置后重启App Service,Tomcat会直接读取/home/site/wwwroot/webapps/wholesale中的应用文件,无需复制到容器内部。

方案2:自定义启动脚本强制复制

通过启动命令在容器初始化时自动同步目录:

  • 进入App Service的配置 -> 常规设置
  • 在启动命令中填入:
    bash -c "mkdir -p /usr/local/tomcat/webapps/wholesale && cp -r /home/site/wwwroot/webapps/wholesale/* /usr/local/tomcat/webapps/wholesale/ || true && catalina.sh run"
    
  • 保存后重启,每次容器启动都会先确保目标目录存在,再同步应用文件,最后启动Tomcat。|| true避免因目录不存在导致启动失败。

方案3:修改Tomcat配置文件

手动调整Tomcat的server.xml或context.xml,指定应用路径:

  • 通过Kudu工具(https://<你的应用名>.scm.azurewebsites.net/)进入容器,编辑/usr/local/tomcat/conf/server.xml
  • 在<Host>节点内添加:
    <Context path="/wholesale" docBase="/home/site/wwwroot/webapps/wholesale" reloadable="true" />
    
  • 保存后重启Tomcat,应用会直接加载指定路径的文件。注意:若镜像更新,此配置可能被覆盖,建议将自定义配置文件挂载到持久化存储中。

方案4:临时回退镜像版本(应急用)

如果需要快速恢复服务,可暂时指定旧版本镜像:

  • 在App Service的配置 -> 常规设置中,将Docker镜像改为之前正常运行的版本(例如旧的标签号)
  • 保存后重启,待后续适配新镜像后再切换回来。

内容的提问来源于stack exchange,提问作者Tanguy Couery LTR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:35:20