+6
-1
@@ -13,6 +13,11 @@ RUN apt-get update \
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY target/app.jar /app/app.jar
|
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
|
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/");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -69,8 +69,10 @@ logging:
|
|||||||
|
|
||||||
# ===== 文件上传与学校配置 =====
|
# ===== 文件上传与学校配置 =====
|
||||||
# 文件存储根目录(UserSettingsController 壁纸/图标上传使用)
|
# 文件存储根目录(UserSettingsController 壁纸/图标上传使用)
|
||||||
|
# 本地默认 ./upload/(相对工作目录);生产由 Nacos 覆盖为 /data/upload(容器卷挂载到宿主机)
|
||||||
FILE_PATH: ./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/
|
FILE_WEB_PATH: http://localhost:8070/upload/
|
||||||
# 学校配置接口基址(SchSettingsController 使用,prod 由 Nacos 覆盖)
|
# 学校配置接口基址(SchSettingsController 使用,prod 由 Nacos 覆盖)
|
||||||
SCH_CONF_URL: ""
|
SCH_CONF_URL: ""
|
||||||
|
|||||||
Reference in New Issue
Block a user