У меня есть образ Docker (приложение Java Tomcat), который я создал и отправил в частный реестр. Когда я перетаскиваю его на удаленный сервер и запускаю, я постоянно получаю ошибку 500 и:
jakarta.servlet.ServletException: Filter execution threw an exception
Основная причина:
java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.util.JacksonFeatureSet com.fasterxml.jackson.core.JsonParser.getReadCapabilities()'
Я загрузил образ на свой локальный компьютер, и он работает нормально. Обе системы — Ubuntu 22.04 (на моей машине есть рабочий стол с графическим интерфейсом и докером, удаленная система — это сервер Ubuntu с движком Docker Cli). Я не могу понять, почему поведение на разных машинах будет разным, и некоторое время пытался поискать. Проблема возникает точно так же при создании образа в каждой отдельной системе.
Отредактированный файл Dockerfile:
FROM tomcat:10.1.24-jdk21
RUN apt-get update && apt-get install -y default-jdk maven
WORKDIR /usr/local/
COPY . .
# these need to be copied from the local environment due to changes in the properties across environments
RUN mv context.xml /usr/local/tomcat/conf/context.xml
RUN mv catalina.properties /usr/local/tomcat/conf/catalina.properties
RUN ["mvn", "clean", "install", "-Dmaven.test.skip=true"]
RUN ["mvn", "package", "-Dmaven.test.skip=true"]
# these lines fixed a previous error. Have also tried commenting them out
RUN mv /usr/local/tomcat/webapps /usr/local/tomcat/webapps2
RUN mv /usr/local/tomcat/webapps.dist /usr/local/tomcat/webapps
EXPOSE 8080
RUN cp /usr/local//target/.war /usr/local/tomcat/webapps/.war
Подробнее здесь: https://stackoverflow.com/questions/787 ... ot-another