Я сделал веб-приложение на Java и хотел бы проверить сайт локально с помощью Docker.
Файл войны, который я создал, работает отлично, но для правильного прочтения его необходимо вставить в этот путь:
/tomcat/webapps/ROOT/
По этим причинам я решил использовать эту форму:
https://hub.docker.com/_/tomcat
В частности, я решил использовать этот Dockerfile:
https://github.com/docker-library/tomcat/blob/ec2d88f0a3b34292c1693e90bdf786e2545a157e/9.0/jre11-slim/Dockerfile
Я добавил этот код к концу:
...
EXPOSE 8080
CMD ["cd /usr/local/tomcat/webapps/"]
CMD ["mv ROOT ROOT.old"]
CMD ["mkdir ROOT"]
COPY ./esercitazione.1.maven/ /usr/local/tomcat/webapps/ROOT/
CMD ["catalina.sh", "run"]
Я использовал этот код в приглашении Windows 10:
D:
cd "D:\DATI\Docker-Tomcat-Win10"
docker build -t tomcat-9-java-11:v2.0 .
docker run -it --rm --name tomcat-9-java-11-container -p 8888:8080 tomcat-9-java-11:v2.0
Когда я вхожу в браузер по этой ссылке:
http://192.168.99.103:8888/
Я вижу это:
https://prnt.sc/n2vti1
Я новичок в Docker и Tomcat, и мне нужна небольшая помощь.
Внутри этого пути я положил свой разархивированный файл .war:
D:\DATI\Docker-Tomcat-Win10\esercitazione.1.maven
Спасибо
%%%%%%%%%%%%%%%%%%%%%%%%%%
@ Шри Тивари
%%%%%%%%%%%%%%%%%%%%%%%%%%
Прежде всего спасибо за помощь!
Я удалил все контейнеры и все изображения в Docker и использовал ваш Dockerfile (я только изменил имя папки, содержащей файлы .war для проверки).
FROM tomcat:9-jre8
ENV JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:MaxMetaspaceSize=128m"
WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/*
COPY ./webapps/*.war /usr/local/tomcat/webapps
EXPOSE 8080
CMD ["catalina.sh", "run"]
Я разместил файл .war по этому адресу:
D:\DATI\Docker-Tomcat-Win10\webapps\esercitazione.1.maven.war
Я открыл приглашение Windows и набрал:
D:
cd "D:\DATI\Docker-Tomcat-Win10"
docker build -t tomcat:v1.0 .
docker run -it --rm --name tomcat-container -p 8888:8080 tomcat:v1.0
Я ввел этот URL в браузер:
http://192.168.99.103:8888/esercitazione.1.maven/
тогда этот другой:
http://192.168.99.103:8888/
К сожалению, ни один из них не прошел хорошо.
Единственная ошибка, с которой я столкнулся при создании изображения, это:
"ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ: Вы создаете образ Docker из Windows на хосте, отличном от Windows. Файлы и каталоги, добавленные в контекст сборки, будут иметь права доступа '-rwxr-xr-x'. Рекомендуется дважды проверить и сбросить разрешения для конфиденциальных файлов и каталогов. "
%%%%%%%%%%%%%%%%%%%%%%%%%%
@ Miq
%%%%%%%%%%%%%%%%%%%%%%%%%%
Прежде всего спасибо за помощь!
Я также проверил ваш код, но он не работает.
Dockerfile:
FROM tomcat:9-jre11-slim
RUN mv webapps/ROOT webapps/ROOT.old && mkdir webapps/ROOT
COPY ./esercitazione.1.maven/ webapps/ROOT/
Код:
D:
cd "D:\DATI\Docker-Tomcat-Win10"
docker build -t tomcat:v2.0 .
docker run -it --rm --name tomcat-container tomcat:v2.0
Браузер:
http://192.168.99.103:8080/
Другие тесты:
FROM tomcat:9-jre11-slim
ENV JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:MaxMetaspaceSize=128m"
RUN mv webapps/ROOT webapps/ROOT.old && mkdir webapps/ROOT
WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/ROOT/*
COPY ./webapps/*.war /usr/local/tomcat/webapps/ROOT/
EXPOSE 8080
CMD ["catalina.sh", "run"]
docker ps -a
docker images
docker stop tomcat-container
docker rmi tomcat:v3.0
D:
cd "D:\DATI\Docker-Tomcat-Win10"
docker build -t tomcat:v3.0 .
docker run -d --name tomcat-container -p 8888:8080 tomcat:v3.0
http://192.168.99.103:8888/
%%%%%%%%%%%%%%%%%%%%%%%%%%
Другие тесты: (8 апреля 2019 г.)
FROM tomcat:9.0.17-jre11-slim
LABEL Author="Nome Cognome"
EXPOSE 8080
RUN rm -fr /usr/local/tomcat/webapps/ROOT
COPY ./esercitazione.1.maven.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
>
docker build -t tomcat-eb:v.9.0.17 .
docker run -it --rm -p 8888:8080 tomcat-eb:v.9.0.17
>
Я собираюсь сюда:
http://192.168.99.103:8888
и браузер отправляет меня сюда:
https://192.168.99.103:8443
%%%%%%%%%%%%%%%%%%%%%%%%%%
Другие тесты: (я выбираю другое изображение)
FROM tomee:8-jre-8.0.0-M2-webprofile
LABEL Author="Nome Cognome"
EXPOSE 8080
RUN rm -fr /usr/local/tomcat/webapps/ROOT
COPY ./esercitazione.1.maven.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
>
docker build -t tomcat-eb:v.9.0.17 .
docker run -it --rm -p 8888:8080 tomcat-eb:v.9.0.17
>
Если я пойду сюда:
http://192.168.99.103:8888
Я вижу Tomcat дома, а не мое веб-приложение.
Это проблема без решения?