我正在创建一个简单的Java/Gradle/Spring应用程序。我正在对应用程序进行Docker化。当我在本地运行应用程序而不使用Docker时,它会正确使用我的application.yml
文件中的值。但是,当我运行Docker映像时,它不会使用application.yml
文件中的任何值。
在下面我的Docker文件中,你会看到我把application.yml
文件复制到了docker映像中我的jar所在的目录中,另外,在入口点中,我正确地引用了application.yml
文件(当我把这个文件路径修改为不正确的路径时,应用程序会在启动时中断)。
停靠文件:
FROM eclipse-temurin:17-jdk
EXPOSE 8080
RUN mkdir -p /app/
ADD build/libs/image-name-0.0.1-SNAPSHOT.jar /app/image-name.jar
ADD build/resources/main/application.yml /app/application.yml
ENTRYPOINT ["sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /app/image-name.jar --spring.config.location=file:/app/application.yml"]
下面是我的docker-compose.yml
文件。我认为这并不重要,因为我只使用docker run ...
命令就得到了相同的结果,但我想添加它作为上下文:
version: '2'
services:
image-name:
image: 'image-name:latest'
container_name: image-name
ports:
- "8081:8080"
build:
context: .
depends_on:
- postgres_db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/compose-postgres
- SPRING_DATASOURCE_USERNAME=admin
- SPRING_DATASOURCE_PASSWORD=password
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
postgres_db:
image: 'postgres:13.1-alpine'
container_name: postgres_db
environment:
- POSTGRES_USER=admin # TODO: CHANGE THIS LATER
- POSTGRES_PASSWORD=password # TODO: CHANGE THIS LATER
我已经添加了Spring Actuator依赖项,并使用application.yml
公开了健康端点。但是,当我通过Docker映像运行此操作时,下面的日志丢失(但当我在本地运行而不使用Docker时,下面的日志存在)。当我点击/actuator/health
端点时,我还得到了404:
2022-12-26T15:07:08.439-06:00 INFO 23289 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator'
你知道我做错了什么吗?我已经看了似乎每一个其他相关的堆栈溢出线程没有运气。
1条答案
按热度按时间uujelgoq1#
选择应该放在首位。
在您的情况下应该是:
参考文件