icon文件404修复
build / build-push (push) Failing after 1m27s

This commit is contained in:
chenxing
2026-08-24 20:41:49 +08:00
parent f20e204800
commit ec93c5648d
3 changed files with 51 additions and 2 deletions
+6 -1
View File
@@ -13,6 +13,11 @@ RUN apt-get update \
WORKDIR /app
COPY target/app.jar /app/app.jar
# 镜像内 application-prod.yml 仅作「nacos 不可达时的兜底默认」;
# 正常启动由 bootstrap.yml 从 nacos 拉取线上配置(dataId=userhome.yaml)后覆盖。
COPY docker/application-prod.yml /app/config/application-prod.yml
# 上传文件落容器卷,compose 里挂到宿主机 ./upload-data
RUN mkdir -p /data/upload
EXPOSE 10000
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS:--Xms512m -Xmx1024m} -Dfile.encoding=UTF-8 -jar /app/app.jar"]
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS:--Xms512m -Xmx1024m} -Dfile.encoding=UTF-8 -jar /app/app.jar --spring.profiles.active=prod"]
@@ -0,0 +1,42 @@
package com.yunhai.userhome.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.io.File;
/**
* Web MVC 配置:将上传文件目录映射为静态资源,使 /upload/** URL 可直接访问磁盘文件。
*
* <p>对齐 UserBase 的 MyWebAppConfigurer:按子目录分别映射,
* UserHome 当前使用 icon(图标上传)和 wallpaper(壁纸上传)两个子目录。
*
* <p>背景:UserSettingsController 的 iconUpload / wallpaperUpload 将文件保存到
* ${FILE_PATH}/${子目录}/,返回 URL 如 /upload/icon/xxx.svg,
* 但 Spring Boot 默认不映射工作目录下的文件夹为静态资源,导致 404。
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${FILE_PATH:./upload/}")
private String FILE_PATH;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 转为绝对路径,避免相对路径在不同工作目录下解析不一致
String basePath = new File(FILE_PATH).getAbsolutePath().replace("\\", "/");
if (!basePath.endsWith("/")) {
basePath += "/";
}
// icon 子目录:/upload/icon/** → ${FILE_PATH}/icon/
registry.addResourceHandler("/upload/icon/**")
.addResourceLocations("file:" + basePath + "icon/");
// wallpaper 子目录:/upload/wallpaper/** → ${FILE_PATH}/wallpaper/
registry.addResourceHandler("/upload/wallpaper/**")
.addResourceLocations("file:" + basePath + "wallpaper/");
}
}
+3 -1
View File
@@ -69,8 +69,10 @@ logging:
# ===== 文件上传与学校配置 =====
# 文件存储根目录(UserSettingsController 壁纸/图标上传使用)
# 本地默认 ./upload/(相对工作目录);生产由 Nacos 覆盖为 /data/upload(容器卷挂载到宿主机)
FILE_PATH: ./upload/
# 文件 Web 访问前缀(prod 由 Nacos 覆盖)
# 文件 Web 访问前缀(拼接壁纸完整 URL 用,见 UserSettingsController.getUserWallpaperList)
# 本地 http://localhost:8070/upload/;生产由 Nacos 覆盖为 http://home.yunhaixingtong.com/userhome/upload/
FILE_WEB_PATH: http://localhost:8070/upload/
# 学校配置接口基址(SchSettingsController 使用,prod 由 Nacos 覆盖)
SCH_CONF_URL: ""