gpt4 book ai didi

java - 在 Docker 中使用 Spring Boot Actuator?

转载 作者:行者123 更新时间:2023-11-30 01:57:02 25 4
gpt4 key购买 nike

我有一个带有自定义 Spring Boot Actuators 的 Spring Boot 微服务。当我直接运行 Jar 时,我可以访问所有执行器,当我在 Docker-Image 中运行相同的 Jar 时,我收到 404 错误。

安全配置:

@Configuration
public class ActuatorSecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.requestMatcher(EndpointRequest.toAnyEndpoint())
.anonymous()
//.authorizeRequests()
//.anyRequest().authenticated()
.and()
.httpBasic();
}
}

Application.yaml:

spring:
profiles: actuator
management.endpoints:
web.exposure.include: "*"
health.show-details: always

这就像我的执行器的“样板代码”:

@Component
@RestControllerEndpoint(id = "acturatorName")
public class acturatorNameActurator {
@GetMapping(value = "/foo", produces = "application/json")
public String bar(){
return "{\"status\":\"started\"}";
}
...
}

当我只运行 Jar run Inside docker 时,我的自定义执行器都不起作用?例如, /actuator/info 可以工作,但 /actuator/metrics 则不行。我可以做什么来解决这个问题?Ty 高级

编辑

  • 我的安全配置可能有误吗? Spring 是否可能会因为容器位于另一个(Docker)网络中而阻止请求?但然后我会得到一些与 404 不同的东西,对吗?

  • Spring 已绑定(bind)在 IP 0.0.0.0 端口 8080 上,我可以正常访问我的 REST 端点

最佳答案

TL;DR

我忘记更改/添加执行器 Spring 轮廓

长版

问题出在我的 Dockerfile 中:

FROM openjdk:8-jdk-alpine

ADD target/app.jar /jar/

VOLUME /tmp

EXPOSE 8080

ENV SPRINGPROFILES=prod

CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "-Dserver.port=8080", "-Dserver.address=0.0.0.0", "/jar/app.jar", "--spring.profiles.active=${SPRINGPROFILES}"]
  1. 我忘记传递 SPRINGPROFILE 变量 (= prod,actuator)
  2. 它无法识别该变量

在我将 dockerfile 更改为

之后
FROM openjdk:8-jdk-alpine

ADD target/app.jar /jar/

VOLUME /tmp

EXPOSE 8080

ENV SPRINGPROFILES=prod

ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=${SPRINGPROFILES}","-jar", "-Dserver.port=8080", "-Dserver.address=0.0.0.0", "/jar/app.jar"]

并将环境变量添加到我的 docker-compose-file 中,它起作用了

environment:
- "SPRINGPROFILES=prod,actuator"

关于java - 在 Docker 中使用 Spring Boot Actuator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com