Docker构建镜像未包含gltf文件致AKS部署后404问题排查
问题分析与解决
你的核心问题是Docker构建镜像时,gltf模型文件没有被正确复制到发布目录,导致运行时触发404错误。IDE(Rider/Visual Studio)运行正常是因为开发环境会自动处理静态资源的复制逻辑,而dotnet publish需要明确配置才能识别并包含这类非标准静态文件。
解决步骤
1. 修改项目配置文件(.csproj)
打开TheResistanceOnline.Web.csproj,添加对gltf及关联文件的复制规则,确保dotnet publish执行时能把这些文件打包到发布目录:
<ItemGroup> <!-- 匹配assets目录下所有gltf模型文件 --> <Content Include="wwwroot/assets/**/*.gltf"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <!-- 如果gltf包含对应的.bin二进制资源文件,需一并添加规则 --> <Content Include="wwwroot/assets/**/*.bin"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <!-- 若项目中还有其他模型格式(如glb),可继续添加对应匹配规则 --> </ItemGroup>
2. 验证Docker构建结果
重新构建镜像并运行后,可通过以下命令进入容器检查文件是否存在:
# 查看运行中的容器ID docker ps # 进入容器查看assets目录下的文件 docker exec -it <容器ID> ls /app/wwwroot/assets
如果能看到目标gltf文件,说明配置生效,访问时就不会出现404错误了。
3. 无需迁移到Azure Storage
当前问题完全是构建环节的文件复制配置遗漏,不需要将模型文件转移到Azure Storage Explorer,修复csproj配置即可解决问题。
内容的提问来源于stack exchange,提问作者shane-oo
相关产品推荐
相关产品推荐

