У меня есть приложение Spring, встроенное в образ Docker, с помощью следующей команды в dockerfile
CMD cd /opt/app/jar \
&& java -Dspring.config.location=file:/opt/app/config/ -Dspring.profiles.active=test -jar *.jar
При создании приложения в OpenShift с
oc new-app --name=test-app --docker-image=MyImage
и проверить журнал с oc logs <pod_name>
, я вижу эту ошибку:
java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[LOGFILE] - Failed to create parent directories for [/opt/app/jar/../log/debug.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[LOGFILE] - openFile(/opt/app/jar/../log/debug.log,true) call failed. java.io.FileNotFoundException: /opt/app/jar/../log/debug.log (No such file or directory)
Однако, когда я запускаю образ напрямую с помощью docker run -it <image_ID> /bin/bash
, а затем выполняю команду java -jar
, описанную выше, он работает нормально.
Вот фрагмент из моего logback.xml
файла:
<appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${user.dir}/../log/debug.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${user.dir}/../log/archived/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>10</maxHistory>
</rollingPolicy>
</appender>
Не могли бы вы сообщить, что мне не хватает?
Версии, которые я использую:
*# oc version
oc v3.7.14
kubernetes v1.7.6+a08f5eeb62
features: Basic-Auth GSSAPI Kerberos SPNEGO
# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-71.git3e8e77d.el7.x86_64
Go version: go1.8.3
Git commit: 3e8e77d/1.12.6
Built: Wed Dec 13 12:18:58 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-71.git3e8e77d.el7.x86_64
Go version: go1.8.3
Git commit: 3e8e77d/1.12.6
Built: Wed Dec 13 12:18:58 2017
OS/Arch: linux/amd64*