Подтвердить что ты не робот

Докер добавляет warfile к официальному изображению Tomcat

Я вытащил официальное изображение Docker для Tomcat, выполнив эту команду.

docker run -it --rm tomcat:8.0

Используя это как базовое изображение, мне нужно создать новое изображение, содержащее мой военный файл в папке tomcat webapps. Я создал Dockerfile, как это.

From tomcat8
ADD warfile /usr/local/tomcat

Когда я запускаю этот файл Docker, создавая изображение, я не могу видеть первую страницу Tomcat.

Может кто-нибудь сказать мне, как добавить мой warfile в официальную папку веб-изображений Tomcat images.

4b9b3361

Ответ 1

Считая из документации репо, вы сделали бы что-то вроде этого

FROM tomcat
MAINTAINER xyz

ADD your.war /usr/local/tomcat/webapps/

CMD ["catalina.sh", "run"]

Затем создайте свое изображение с помощью docker build -t yourName <path-to-dockerfile>

И запустите его с помощью

docker run --rm -it -p 8080:8080 yourName
  • --rm удаляет контейнер, как только вы его останавливаете.
  • -p перенаправляет порт на ваш хост (или если вы используете boot2docker для этого IP-адреса)
  • -it позволяет интерактивный режим, поэтому вы видите, что что-то развертывается

Ответ 2

Основываясь на ответе @daniel, если вы хотите развернуть свою WAR до корня tomcat, я сделал следующее:

FROM tomcat:7-jre7
MAINTAINER xyz

RUN ["rm", "-fr", "/usr/local/tomcat/webapps/ROOT"]
COPY ./target/your-webapp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war

CMD ["catalina.sh", "run"]

Удаляет существующий корневой webapp, копирует вашу WAR в имя ROOT.war, затем выполняет tomcat.

Ответ 3

Как вы проверяете папку webapps?

Папка webapps находится в контейнере докера. Если вы хотите получить доступ к своему контейнеру webapps, вы можете установить каталог хоста в своем контейнере, чтобы использовать его как папку webapps. Таким образом, вы можете получить доступ к файлам без доступа к докере. Подробности см. здесь

Чтобы получить доступ к своим журналам, вы можете сделать это при запуске своего контейнера, например.

docker run -rm -it -p 8080:8080 **IMAGE_NAME** /path/to/tomcat/bin/catalina.sh  && tail -f /path/to/tomcat/logs

или вы начинаете свой контейнер докеров, а затем делаете что-то вроде:

docker exec -it **CONTAINER_ID** tail -f /path/to/tomcat/logs

Ответ 4

docker run -it -rm --name MYTOMCAT -p 8080: 8080 -v.../wars:/usr/local/tomcat/webapps/tomcat: 8.0

где папка wars содержит войну для развертывания