Jboss 5.1 in Dockerfile - how to reach the server in a browser

3.4k views Asked by At

I have a dockerfile which looks like this:

FROM ubuntu:trusty

RUN DEBIAN_FRONTEND=noninteractive apt-get -yq upgrade

# Update to latest
RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list
RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" > /etc/apt/sources.list.d/webupd8team-java.list
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C2518248EEA14886

RUN apt-get update
RUN apt-get upgrade -y

# Install basics
# RUN apt-get install -y python-software-properties software-properties-common unzip
RUN apt-get install -y unzip


# Install Java, auto-accepting the license
# RUN add-apt-repository -y ppa:webupd8team/java
# RUN apt-get update
# RUN echo oracle-java6-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
# RUN apt-get install -y oracle-java6-installer
RUN echo oracle-java6-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections

# Install different Java versions
RUN DEBIAN_FRONTEND=noninteractive apt-get install -yq oracle-java6-installer 

# Set environment variables pointing to different Java installations
ENV JAVA_HOME /usr/lib/jvm/java-6-oracle
ENV JAVA6_HOME /usr/lib/jvm/java-6-oracle


# Ensure Java 6 is the default version
RUN update-java-alternatives -s java-6-oracle

# Install JBoss 5.1.0.GA
RUN wget -O jboss.zip http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA-jdk6.zip/download
RUN unzip jboss.zip && mv jboss-5.1.0.GA /opt
RUN cd /opt/jboss-5.1.0.GA/bin && chmod +x *.sh
CMD /opt/jboss-5.1.0.GA/bin/run.sh


# Clean-up to reduce the image size
RUN apt-get clean

EXPOSE 8080

i build it than with:

sudo docker build -t dockerfile .

everything builds fine. so I start the server with:

sudo docker run -it --publish 127.0.0.1:8080:8080 dockerfile:latest

I can see that the server starts correctly

If I enter the URL 127.0.0.1:8080 i got an error site:

the connection was reset - the connection to the server was reset while the page was loading

How do I get a connection to the server in my browser?

The inspect of my container looks like this:

[{
    "Args": [
        "-c",
        "/opt/jboss-5.1.0.GA/bin/run.sh"
    ],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/sh",
            "-c",
            "/opt/jboss-5.1.0.GA/bin/run.sh"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "JAVA_HOME=/usr/lib/jvm/java-6-oracle",
            "JAVA6_HOME=/usr/lib/jvm/java-6-oracle"
        ],
        "ExposedPorts": {
            "8080/tcp": {}
        },
        "Hostname": "054aaccfd754",
        "Image": "dockerfile:latest",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": false,
        "PortSpecs": null,
        "SecurityOpt": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Created": "2014-11-27T11:35:34.538502513Z",
    "Driver": "aufs",
    "ExecDriver": "native-0.2",
    "HostConfig": {
        "Binds": null,
        "CapAdd": null,
        "CapDrop": null,
        "ContainerIDFile": "",
        "Devices": [],
        "Dns": null,
        "DnsSearch": null,
        "ExtraHosts": null,
        "Links": null,
        "LxcConf": [],
        "NetworkMode": "bridge",
        "PortBindings": {
            "8080/tcp": [
                {
                    "HostIp": "172.17.42.1",
                    "HostPort": "8080"
                }
            ]
        },
        "Privileged": false,
        "PublishAllPorts": false,
        "RestartPolicy": {
            "MaximumRetryCount": 0,
            "Name": ""
        },
        "VolumesFrom": null
    },
    "HostnamePath": "/var/lib/docker/containers/054aaccfd7544a0c14a9f53f94ea2be0c2d6d58437c5311f6507ce2e4466bfa7/hostname",
    "HostsPath": "/var/lib/docker/containers/054aaccfd7544a0c14a9f53f94ea2be0c2d6d58437c5311f6507ce2e4466bfa7/hosts",
    "Id": "054aaccfd7544a0c14a9f53f94ea2be0c2d6d58437c5311f6507ce2e4466bfa7",
    "Image": "f820f5fe9d26c8e896b9d902492ba66f8ed679792047c9c3147b7045df0ed98f",
    "MountLabel": "",
    "Name": "/sleepy_franklin",
    "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "IPAddress": "172.17.0.5",
        "IPPrefixLen": 16,
        "MacAddress": "02:42:ac:11:00:05",
        "PortMapping": null,
        "Ports": {
            "8080/tcp": [
                {
                    "HostIp": "172.17.42.1",
                    "HostPort": "8080"
                }
            ]
        }
    },
    "Path": "/bin/sh",
    "ProcessLabel": "",
    "ResolvConfPath": "/var/lib/docker/containers/054aaccfd7544a0c14a9f53f94ea2be0c2d6d58437c5311f6507ce2e4466bfa7/resolv.conf",
    "State": {
        "ExitCode": 0,
        "FinishedAt": "0001-01-01T00:00:00Z",
        "Paused": false,
        "Pid": 4236,
        "Restarting": false,
        "Running": true,
        "StartedAt": "2014-11-27T11:35:35.120814905Z"
    },
    "Volumes": {},
    "VolumesRW": {}
}

EDIT after jottrs answers: the logs says:

....
11:36:32,963 INFO  [TomcatDeployment] deploy, ctxPath=/admin-console
11:36:33,067 INFO  [config] Initializing Mojarra (1.2_12-b01-FCS) for context '/admin-console'
11:36:38,001 INFO  [TomcatDeployment] deploy, ctxPath=/
11:36:38,068 INFO  [TomcatDeployment] deploy, ctxPath=/jmx-console
11:36:38,232 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
11:36:38,314 INFO  [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
11:36:38,341 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 1m:1s:805ms

nothing more....

because of Jottrs IP mention: As far as i understood, I bind my server to 127.0.0.1:8080 with the start command:

sudo docker run -it --publish 127.0.0.1:8080:8080 dockerfile:latest

If I look with ifconfig i have the docker file running on:

$ ifconfig
docker0   Link encap:Ethernet  Hardware Adresse 56:84:7a:fe:97:99  
          inet Adresse:172.17.42.1  Bcast:0.0.0.0  Maske:255.255.0.0
          inet6-Adresse: fe80::5484:7aff:fefe:9799/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:86 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:101 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:0 
          RX-Bytes:4983 (4.9 KB)  TX-Bytes:12056 (12.0 KB)

But with $ sudo docker inspect --format "{{ .NetworkSettings.IPAddress }}" 054 i get 172.17.0.5

But I also get no connection in my browser with the URL 172.17.0.5:8080 or URL 172.17.42.1:8080

also if I start with $ sudo docker run -d --publish 172.17.42.1:8080:8080 dockerfile:latest (the ifconfig IP) I will not get a connection (and still no reaction on the logs)

$ sudo docker exec -it 228 bash
root@22870ce4265e:/# cat /etc/hosts
172.17.0.6  22870ce4265e
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
1

There are 1 answers

0
joh.scheuer On BEST ANSWER

The problem is JBoss not Docker. JBoss listen per default only to localhost:8080 Jboss only works on localhost:8080 ,but doesnt reply when called by ip (I'm not a JBoss guy so you have to try "-b 0.0.0.0" or to provide a server.xml via ADD in your Dockerfile).

When you run (in my case I called the container jboss)

sudo docker exec jboss apt-get install curl -y 
sudo docker exec jboss curl localhost:8080

you notice that JBoss runs and is accessable.