2016-10-03 3 views
1

Я пытаюсь запустить приложение с помощью Docker. Приложение - это программа Java, работающая на Tomcat. Таким образом, я строй изображения и мой Dockerfile выглядит следующим образом:Spring-agent: Ошибка открытия zip-файла или манифеста JAR отсутствует

FROM tomcat:7.0.72-jre8 

COPY Tomcat/ $CATALINA_HOME/ 

ENV JAVA_OPTS="$JAVA_OPTS -javaagent:$CATALINE_HOME/lib/spring-agent-2.5.6.jar -Xms2048m -Xmx2048m -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true" 

Как вы видите, я использую -javaagent вариант, но он вызывает:

Error opening zip file or JAR manifest missing : /lib/spring-agent-2.5.6.jar 
Error occurred during initialization of VM 
agent library failed to init: instrument 

Я пробовал то же самое через настройку JAVA_OPTS в setenv.sh - то же исключение. Я уверен, что lib копируется в контейнер и существует по указанному пути. Я проверил его, запустив такое же изображение без опции javaagent, а затем получив доступ к нему в терминале. spring-agent был в папке lib, поэтому я немного застрял.

Я новый пользователь Ubuntu, и я предполагаю, что там может быть никакого разрешения проблемы и т.д.

Любые предложения?

ответ

0

Правильный способ - позволить Docker строить файл jar вместо передачи предыдущего созданного файла jar. Я сделал это так: https://github.com/glapp/mape/blob/master/Dockerfile

Это может быть полезно для вашего Spring приложения: https://spring.io/guides/gs/spring-boot-docker/

+0

Как это может быть полезно с проблемой javaagent? На самом деле, как и все, что нужно упомянуть, но я не думаю, что это решение. – quento

+0

Почему, по-вашему, проблема с javaagent? В сообщении об ошибке указано, что у него возникла проблема с открытием zip-файла или отсутствием файла манифеста. Вы уже убедились, что файл манифеста находится в вашем файле jar? Я подозреваю, что это настоящая причина. – RichArt

0

Ну, проблема была в $CATALINA_HOME, как эта переменная была упущена, когда javaagent вариант был вызван, поэтому я нашел временное решение укажите путь, как /usr/local/tomcat/, а не $CATALINA_HOME.

Довольно неожиданно, как на шаге перед копированием файлов на $CATALINA_HOME, и он работает.

Я все равно не буду проверять этот ответ как правильный, потому что он не похож на хорошее решение. Любые идеи по-прежнему оцениваются.

Смежные вопросы