This repository contains Dockerfile of Apache Tomcat 8.
It use a Docker's personal build published to the public Docker Registry.
This docker apache tomcat images supports production and development. A lot of other tomcat docker images exist, but the only support development or not use the newest version or bundle an open jdk. We want build a nicer one. Send us your missing features!
Goals
*.bat, .. files.You can deploy your own webapps and tomcat extended library with local volumens or better with a docker data container.

Currently the apache tomcat8 images are available as automatic docker hub build and a squash version.
docker pull rossbachp/java8docker pull rossbachp/tomcat8 or rossbachp/apache-tomcat8: docker pull rossbachp/apache-tomcat8 ordocker run -it --rm -P rossbachp/apache-tomcat8
docker run -it --rm -P rossbachp/tomcat8
mkdir -p hello
cd hello
echo "Hello Docker Tomcat World" >index.jsp
jar -cf ../hello.war .
cd ..
docker run --name=tomcat8 -d -p 8080:8080 -v `pwd`:/webapps rossbachp/tomcat8
curl http://127.0.0.1:8080/hello/index.html
mkdir -p hello
cd hello
echo "Hello Docker Tomcat World" >index.jsp
jar -cf ../hello.war .
cd ..
vi Dockerfile
Dockerfile
FROM busybox
MAINTAINER Peter Rossbach <[email protected]>
RUN mkdir /webapps
ADD hello.war /webapps/hello.war
VOLUME ["/webapps"]
CMD /bin/sh
Running
docker build -t="rossbachp/hello-app".
docker run -it --name=hello-app rossbach/hello-app ls /webapps
docker run --name=tomcat8 -d -p 8080:8080 --volumes-from hello-app rossbachp/tomcat8
curl http://127.0.0.1:8080/hello/index.html
deploy with your system parameters
docker run -it --rm --env CATALINA_OPTS="-Ddb.user=admin -Ddb.password=secret" -v `pwd`/webapps:/webapps -v `pwd`/libs:/libs rossbachp/tomcat8
use your own JVM_ROUTE
docker run -it --rm --env TOMCAT_JVM_ROUTE=tomcat79 -p 7980:8080 -p 7909:8009 -v `pwd`/webapps:/webapps rossbachp/tomcat8
stop tomcat
docker stop --time=10 tomcat8
| Parameter | Default | Comment |
|---|---|---|
JAVA_MAXMEMORY | 256 | setup jvm max memory |
TOMCAT_MAXTHREADS | 250 | setup max executor threads |
TOMCAT_MINSPARETHREADS | 4 | setup min spare executor threads |
TOMCAT_HTTPTIMEOUT | 20000 | setup http connector timeout |
TOMCAT_JVM_ROUTE | tomcat80 | support session sticky ness suffix |
TOMCAT_JVM_ROUTE | tomcat80 | support session sticky ness suffix |
TOMCAT_PASS | random generated | admin password |
CATALINA_OPTS | s. tomcat.sh | tomcat start parameter |
JAVA_OPTS | s. tomcat.sh | spezial java start/stop parameter |
$ DOCKER_HOST_IP=$(docker inspect -f '{{.NetworkSettings.IPAddress}}'
$ docker inspect -f '{{ range $key, $value := .NetworkSettings.Ports }}{{ $key }}='"${DOCKER_HOST_IP}:"'{{ (index $value 0).HostPort }} {{ end }}‘ tomcat8 | tr " " "\n"
8080/tcp=172.17.0.30:8080
8009/tcp=172.17.0.30:8009
list all deployed apps$ DOCKER_HOST_IP=$(docker inspect -f '{{.NetworkSettings.IPAddress}}' tomcat8)
$ curl --user "admin:password" http://${DOCKER_HOST_IP}:8080/manager/text/list
OK - Listed applications for virtual host localhost
/manager:running:0:manager
The admin password can be extract from logs:
$ docker logs tomcat8 | head
=> Creating and admin user with a random password in Tomcat
=> Done!
========================================================================
You can now configure to this Tomcat server using:
admin:H4t4bbyZxjNh
========================================================================
Checking *.war in /webapps
Checking tomcat extended libs *.jar in /libs
or set at your password at container starts:
docker run -d --name=tomcat8 --env TOMCAT_PASS=password rossbachp/tomcat8
Install nsenter:
sudo docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
Tail tomcat app or access logs
sudo docker-enter tomcat8 tail -f /opt/tomcat/logs/catalina-2014-08-27.log
sudo docker-enter tomcat8 tail -f /opt/tomcat/logs/access-2014-08-27.log
or
sudo docker logs tail tomcat8
Run jstat
sudo docker-enter tomcat8 su tomcat --shell /bin/bash -c 'jstat -gc 1 5000'
More space for research:
sudo bash
cd /tmp
docker build -t="rossbachp/tomcat8" .
ID=$(docker inspect -f '{{ .Id }}' rossbachp/tomcat8)
docker save $ID > tomcat8.tar
sudo docker-squash -verbose -i tomcat8.tar -o tomcat8-squash.tar -t rossbachp/tomcat8:squash
cat tomcat8-squash.tar | docker load
rm tomcat8.tar
rm tomcat8-squash.tar
or simple use the ``./build.shor with cleanup./build.sh --rmi`
docker login
docker push rossbachp/tomcat8:latest
docker push rossbachp/tomcat8:<DATE TAG>
sudo docker run --rm -t -v /var/log/tomcat8:/opt/tomcat/logs rossbachp/tomcat8 and delegate it to logstash-forwarder or rsyslog.The current configured logging need a better solutions!
echo -e '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}\0' | nc -w 1 my.graylog.server 12201
At your application you can use beter directly use syslog but how we configure syslog host?:
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>localhost</syslogHost>
<facility>LOCAL6</facility>
<suffixPattern>app: %logger{20} %msg</suffixPattern>
</appender>
/etc/hosts with new writable docker >= 1.2 feature
@{syslog.PrivateIpAddress} syslogHave fun with this tomcat images and give feedback!
Peter
Content type
Image
Digest
sha256:03f71c863…
Size
247.9 MB
Last updated
almost 11 years ago
docker pull rossbachp/apache-tomcat8