Использовать Spring Boot Actuator в Docker? - PullRequest
0 голосов
/ 05 января 2019

У меня есть микросервис Spring Boot с пользовательскими приводами Spring Boot. Когда я запускаю Jar напрямую, я могу получить доступ ко всем своим Acturator, когда я запускаю тот же Jar внутри Docker-Image, я получаю сообщение об ошибке 404.

SecurityConfig:

@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

Это похоже на "код Boilerplate" моих приводов:

@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 не работает. Что я могу сделать, чтобы это исправить? Ты в продвинутом

Редактировать

  • Возможно, моя конфигурация безопасности неверна? Может ли Spring заблокировать запрос, потому что контейнер находится в другой (Docker) сети? Но тогда я получу что-то другое, чем 404, верно?

  • Весна привязана по IP 0.0.0.0 Порт 8080, я могу получить доступ к моим REST-конечным точкам нормально

1 Ответ

0 голосов
/ 07 января 2019

TL; DR

я забыл изменить / добавить профиль пружины привода

Длинная версия

Проблема была внутри моего 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 (= продукт, привод)
  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"]

и добавив переменную env в мой docker-compose-файл, он работал

    environment:
      - "SPRINGPROFILES=prod,actuator"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...