web-dev-qa-db-de.com

Docker fügt Warfile zum offiziellen Tomcat-Image hinzu

Mit diesem Befehl habe ich ein offizielles Docker-Image für Tomcat erstellt.

docker run -it --rm Tomcat:8.0

Wenn ich dieses als Basis-Image verwende, muss ich ein neues Image erstellen, das meine Kriegsdatei im Ordner Tomcatwebapps enthält. Ich habe Dockerfile so erstellt.

From Tomcat8
ADD warfile /usr/local/Tomcat

Wenn ich dieses Dockerfile durch Erstellen eines Images starte, kann ich die Tomcat-Startseite nicht sehen.

Kann mir jemand sagen, wie ich mein Warfile zum offiziellen Webapp-Ordner für Tomcat-Bilder hinzufügen kann?.

22
user2451997

Wenn Sie aus der Dokumentation des Repos lesen, würden Sie so etwas tun

FROM Tomcat
MAINTAINER xyz

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

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

Dann baue dein Bild mit docker build -t yourName <path-to-dockerfile>

Und führe es aus mit:

docker run --rm -it -p 8080:8080 yourName
  • --rm entfernt den Container, sobald Sie ihn anhalten
  • -p leitet den Port an Ihren Host weiter (oder wenn Sie boot2docker verwenden, an diese IP)
  • -it ermöglicht den interaktiven Modus, sodass Sie sehen können, ob etwas bereitgestellt wird
66
daniel

Aufbauend auf @ daniels Antwort, wenn Sie Ihr WAR im Stammverzeichnis von Tomcat bereitstellen möchten, habe ich Folgendes getan:

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"]

Es löscht die vorhandene Root-Webanwendung, kopiert Ihre WAR-Datei in den Dateinamen ROOT.war und führt dann Tomcat aus.

20
Tom Saleeba

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

wobei der Ordner WARS WAR enthält, der bereitgestellt werden soll

2

Wie überprüfe ich den Ordner webapps?

Der Ordner webapps befindet sich im Docker-Container. Wenn Sie auf Ihren Container webapps zugreifen möchten, können Sie ein Host-Verzeichnis in Ihrem Container bereitstellen, um es als Ordner webapps zu verwenden. Auf diese Weise können Sie auf Dateien zugreifen, ohne auf Docker zuzugreifen. Details siehe hier

Um auf Ihre Protokolle zuzugreifen, können Sie dies tun, wenn Sie Ihren Container ausführen, z.

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

oder Sie starten Ihren Docker-Container und machen dann etwas wie:

docker exec -it **CONTAINER_ID** tail -f /path/to/Tomcat/logs
2
daniel