我使用带有泊坞窗的弹簧靴。我在spring boot项目中有静态资源,当我用mvn spring运行时:boot run一切正常,资源可用。但是当我使用命令
从它创建docker图像时FROM openjdk:8-jdk-alpine
ADD /target/example-*.jar /
EXPOSE 8080
ENTRYPOINT java -jar example-*.jar
然后我的静态资源不能被localhost:8080使用。应用程序已成功启动(日志中没有错误。)
答案 0 :(得分:1)
jar文件中的资源可能很棘手。
两种方法的404的网址是否相同?
检查docker中使用的jar文件,你的资源是否存在?
尝试运行没有docker的jar文件,我怀疑你的资源 缺失。如果缺少,你需要让maven将它们推送到jar,你可能没有遵循springboot约定来获取资源。
当我需要在父应用程序中包含一个完整的springboot应用程序作为依赖项时,这对我有用:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/static/**").addResourceLocations("classpath:META-INF/resources/static/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:META-INF/resources/webjars/");
registry.addResourceHandler("/**").addResourceLocations("classpath:META-INF/");
}
buildscript {
ext {
springBootVersion = '2.0.0.M7'
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url 'http://repo.spring.io/plugins-release' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE'
classpath 'org.springframework:springloaded:1.2.6.RELEASE'
}
}
ext {
springBootVersion = '2.0.0.M7'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'groovy'
//apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'propdeps'
apply plugin: 'propdeps-idea'
group = 'com.example.app'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
configurations {
includeInJar
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-groovy-templates')
compile('org.codehaus.groovy:groovy')
includeInJar("org.webjars:bootstrap:4.0.0")
includeInJar("org.webjars:jquery:3.3.1")
configurations.compile.extendsFrom(configurations.includeInJar)
}
idea {
module {
inheritOutputDirs = true
}
}
jar {
from configurations.includeInJar.collect { it.isDirectory() ? it : zipTree(it) }
}
compileJava.dependsOn(processResources)