Docker add warfile to official Tomcat image

China☆狼群 提交于 2019-11-28 05:54:27
daniel

Reading from the documentation of the repo you would do something like that

FROM tomcat
MAINTAINER xyz

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

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

Then build your image with docker build -t yourName <path-to-dockerfile>

And run it with:

docker run --rm -it -p 8080:8080 yourName
  • --rm removes the container as soon as you stop it
  • -p forwards the port to your host (or if you use boot2docker to this IP)
  • -it allows interactive mode, so you see if something get's deployed

Building on @daniel's answer, if you want to deploy your WAR to the root of tomcat, I did this:

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

It deletes the existing root webapp, copies your WAR to the ROOT.war filename then executes tomcat.

daniel

How do you check the webapps folder?

The webapps folder is within the docker container. If you want to access your webapps container you could mount a host directory within your container to use it as webapps folder. That way you can access files without accessing docker. Details see here

To access your logs you could do that when you run your container e.g.

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

or you start your docker container and then do something like:

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

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

where wars folder contains war to deploy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!