如何解决Spring Boot静态资源在我的内置jar中,但不在部署到Docker的jar中
我想知道这篇文章的标题是否应该为“我无知”。显然,这是一个常见问题,我已经读过多个主题,但是在某些地方我缺少知识或某些东西。
- / questions / 24661289 / spring-boot-not-serving-static-content
- / questions / 54735747 / spring-boot-not-serving-static-files-from-inside-jar
- / questions / 63061943 /如何在docker-container-container-on-aw上加载带有弹簧引导的静态文件
我已经确认我的问题是静态资源无法运用于Docker。使用CLI,我可以在其中解压缩jar,然后查看其中没有html,js或css文件。
但是,我已经确认我正在使用的广口瓶(无论如何,我想我都在使用它。我不知道怎么可能。)确实在其中。好像它们被有意地提取并以某种方式排除在外。
这是我的application.properties:
#FOR LOCAL
#spring.datasource.url=jdbc:postgresql://localhost:5432/library
#FOR DOCKER
spring.datasource.url=jdbc:postgresql://postgresqldb:5432/library
spring.datasource.username=postgres
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver
#The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#Hibernate ddl auto (create,create-drop,validate,update)
spring.jpa.hibernate.ddl-auto=create
spring.datasource.initialization-mode=always
#This enables app to serve the static content. Not sure why I need it,but it makes it work locally.
server.contextPath=/
这是我的Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=build/libs/microservice1-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} bookws.jar
ENTRYPOINT ["java","-jar","/bookws.jar"]
这是我的docker-compose.yaml
version: '3.1'
services:
app:
container_name: bookws
image: bookws
build: ./
ports:
- "8080:8080"
depends_on:
- postgresqldb
postgresqldb:
image: postgres
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=postgres
- POSTGRES_DB=library
这是我的主要Java文件:
//package and imports excluded for brevity
@SpringBootApplication
public class Microservice1Application {
public static void main(String[] args) {
SpringApplication.run(Microservice1Application.class,args);
}
}
我的静态资源存储在src / main / resources / static
中static/index.html
static/js/book-crud.js
static/js/jquery-3.5.0.min.js
static/js/jquery-ui-1.12.1.min.js
static/css/main.css
static/img/ (some .pngs and some .jpgs)
编辑:添加我的build.gradle文件:
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.familam.learning'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
// annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage',module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
在此先感谢您的见解!!如果我需要添加更多信息,我们很高兴。我可能缺少的最简单的东西是什么?
解决方法
我的问题不是我的配置,而是我对docker-compose如何工作的无知。 docker-compose命令'up'不会重新构建docker镜像。您需要先运行“ docker-compose build”命令。那就是我所缺少的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。