У меня есть сторонний java webapp, который работает в Apache Tomcat. Мы используем докер для запуска этого приложения. При запуске на моей машине мы получаем ошибкуполучение ошибки времени выполнения на контейнере докера только для конкретной машины
Я хочу подчеркнуть, что мы не строим это .war
. Мы не являемся владельцем этого .war
. Мы просто пытаемся развернуть контейнер докера, который запускает этот уже построенный код.
javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
с деталями
java.lang.IncompatibleClassChangeError: Class javax.ws.rs.core.Response$Status does not implement the requested interface javax.ws.rs.core.Response$StatusType
расследующих это онлайн немного показывает много людей, имеющих проблемы с конфликтующими джерси банки. У нас не должно быть этой проблемы, потому что мы используем docker для mac ... и это работает на всех остальных машинах через несколько версий докеров.
Я уничтожил и переустановил докер несколько раз, перезапустив свою машину между каждым перезапуском. Я использовал ту же версию, что и машины, где она работает.
Я на OSX Sierra 10.12.2
докер изображение основано на tomcat:8.5.9-jre8-alpine
Он копирует соответствующие .war
к $CATALINA_HOME/webapps/
и один log4j .jar
к $CATALINA_HOME/lib/
вместе с двумя .properties файлами.
есть ли что-либо на этой конкретной машине, которая могла бы мешать контейнеру?
Dockerfile выглядит следующим образом
FROM tomcat:[email protected]:780c0fc47cf5e212bfa79a379395444a36bbd67f0f3cd9d649b90a74a1a7be20
ENV JAVA_OPTS="-Xms2048m -Xmx2048m"
WORKDIR $CATALINA_HOME
COPY ./target/lib/* $CATALINA_HOME/lib/
COPY ./target/<appname>.war $CATALINA_HOME/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]
Используете ли вы ту же самую двоякую войну, которая разделяется общей репо, например, nexus? Если вы перестраиваете его в каждой среде, тогда проблема заключается в вашей системе сборки для войны, а не в докерах или tomcat. –
мы совершили.war to git и на этапе сборки контейнера просто скопируйте его в каталог webapps – misterManager
Пожалуйста, покажите нам свой файл Dockerfile (соответственно отредактированный, конечно) –