Докер добавляет 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.
Ответы
Ответ 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 содержит войну для развертывания