Why is TomEE not accessible when run in Docker environment?

491 views Asked by At

I am running Tomee7 in Docker. Log says it started but I am not able to see in Browser .

I tried with localhost:8080 and also with docker ip 192.168.99.100:8080

Tomee Log:

INFO - Creating Container(id=My Stateless Container)
INFO - Creating ServerService(id=cxf)
INFO - Creating ServerService(id=cxf-rs)
INFO -   ** Bound Services **
INFO -   NAME                 IP              PORT
INFO - -------
INFO - Ready!
INFO - Initialization processed in 2663 ms
INFO - Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
INFO - Creating Resource(id=UserDatabase)
INFO - Starting service Catalina
INFO - Starting Servlet Engine: Apache Tomcat (TomEE)/8.5.3 (7.0.1)
INFO - Deploying web application directory /home/test/apache-tomee-plus-7.0.1/webapps/ROOT
INFO - ------------------------- localhost -> /
INFO - Configuring enterprise application: /home/test/apache-tomee-plus-7.0.1/webapps/ROOT
INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFO - Auto-creating a container for bean .Comp131040203: Container(type=MANAGED, id=Default Managed Container)
INFO - Creating Container(id=Default Managed Container)
INFO - Using directory /home/test/apache-tomee-plus-7.0.1/temp for stateful session passivation
INFO - Enterprise application "/home/test/apache-tomee-plus-7.0.1/webapps/ROOT" loaded.
INFO - Assembling app: /home/test/apache-tomee-plus-7.0.1/webapps/ROOT
INFO - Deployed Application(path=/home/test/apache-tomee-plus-7.0.1/webapps/ROOT)
INFO - At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
INFO - Deployment of web application directory /home/test/apache-tomee-plus-7.0.1/webapps/ROOT has finished in 729 ms
INFO - Starting ProtocolHandler [http-apr-80]
INFO - Starting ProtocolHandler [https-openssl-apr-8443]
INFO - Server startup in 813 ms

docker ps log:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
e7727df4619b        tomee7              "/bin/sh -c '${TOM..."   2 minutes ago       Up 2 minutes        0.0.0.0:8080->8080/tcp   tomee7

Docker machine :

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v17.06.0-ce

tomee server : ifconfig log

$ docker exec -it tomee7 /bin/bash
root@e7727df4619b:/home/test# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:828 (828.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:200 (200.0 B)  TX bytes:200 (200.0 B)
2

There are 2 answers

1
Bukharov Sergey On

Tomcat startup log says: INFO - Starting ProtocolHandler [http-apr-80]. I suggest tomcat listen 80 port. But you expose 8080 port.

There are 2 way to fix it: Expose 80 port (into docker container). Or change tomcat listening port.

Could you show me please Dockerfile? I try to fix it.

0
frennky On

It seems you're running Docker on a VM inside Virtualbox. You need to configure port forwarding on VM.

If you open VM settings and choose network there should be an option to configure port forwarding. You can google screenshots or videos that show exactly how to do that, just be sure you're using correct port numbers.