Шаг 1 – Зависимости
Убедитесь, что у вас есть Установлена Java EE
, совместимая версия JDK
и Docker
. Если у вас нет Java EE
установлен, или если у вас есть OpenJDK
, вы можете использовать Java EE
jar-файл, загруженный с эта ссылка
Шаг 2 – Скомпилируйте исходный код
Давайте воспользуемся исходным кодом Java из эту ссылку и скомпилируйте ее с помощью
javac -cp .:-target 1.7 -source 1.7 TestingServlet.java
Если вы используете Windows, вы должны использовать ;
вместо :
в classpath -target
– это номер версии среды выполнения tomcat. Аналогично для - источник
Шаг 3 – Настройка среды
Давайте воспользуемся Dockerfile
из здесь и давайте добавим кое-что еще.
FROM tomcat:8.0-alpine LABEL maintainer="deepak@softwareyoga.com" COPY ./web.xml /usr/local/tomcat/webapps/ROOT/WEB-INF COPY ./TestingServlet.class /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/TestingServlet.class COPY ./tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml EXPOSE 8080 CMD ["catalina.sh", "run"]
Мы определяем web.xml
и tomcat-users.xml
позже. Файл TestingServlet.class
важно и мы запомним это имя на потом.
Шаг 4 – Настройка
Давайте определим web.xml
следующим образом:
Welcome to Tomcat Welcome to Tomcat Testing TestingServlet Testing /servlet/TestingServlet
класс сервлета
– это имя файла .class
, а url-шаблон |/- это |/HTTP
url-адрес, по которому вы хотите получить к нему доступ.
Давайте определим tomcat-users.xml
следующим образом:
Apache Tomcat определяет список ролей здесь
Шаг 5 – Развертывание
Давайте создадим образ Docker
docker build -t tomcat .
И запустите его с помощью
docker run -d -p 8080:8080 --name tomcat tomcat
Apache Tomcat работает на порту 8080
в контейнере
Теперь вы можете посетить http://localhost:8080/servlet/TestingServlet
и увидите следующее сообщение
Шаг 6 – Отладка
Если вы видите ошибку, подобную этой Это означает, что вы должны выбрать другую цель и
исходная
версия, более высокая или более низкая в зависимости от версии целевой среды выполнения. Вы можете проверить версию Java Runtime через Tomcat UI в нижней части страницы
В качестве альтернативы вы можете запустить bash version.sh
в /usr/local/tomcat/bin
когда внутри запущенного контейнера Docker
Рекомендации
Оригинал: “https://dev.to/theprogrammerdavid/dockerize-apache-tomcat-servlets-33jj”