Стратегия работы с Tomcat в Spring Boot в контейнере, пытающемся записать файлы в / tmp - PullRequest
0 голосов
/ 29 апреля 2020

У нас есть несколько сервисов SpringBoot (2.0.5), работающих в контейнерах в модулях k8s.

Время от времени мы видим, что контейнеры не запускаются с такими ошибками:

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to create tempDir. java.io.tmpdir is set to /tmp
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:155)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:780)

Я часто вижу ошибку go, если просто перезапускаю всю сборку, включая перестройку образа.

Мы обнаружили, что большую часть времени наши папки на root контейнер выглядит так:

drwxrwxrwt 6 root root 138 Apr 20 21:57 tmp

Когда мы получаем это, мы не получаем ошибку. Однако иногда мы получаем это:

drwxr-xr-x 3 root root 4096 Apr 28 22:09 tmp

Когда это происходит, мы получаем эту ошибку.

Мы также отмечаем, что наш Dockerfile содержит в себе "VOLUME / tmp", по сути, навсегда , но мы никогда ничего не отображаем на него.

Мы намерены сделать так, чтобы наши контейнерные файловые системы были доступны только для чтения, но мы явно должны разрешить запись в / tmp, так как Tomcat хочет, чтобы это произошло, хотя предположительно это возможно перенастроить, где он пытается записать эти временные файлы. Однако я не могу понять, как это настроить в Spring Boot.

Здесь есть несколько проблем, и я не совсем точно знаю, как с этим справиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...