Search code examples
dockerapache-zeppelin

Setup zeppelin in docker without using built-in image


I need to install zeppelin in docker without using the build-in image, because of its huge size (in gb). I want to install zeppelin from the binary file, for example zeppelin-0.8.2-bin-netinst.tgz (Only spark interpreter ~ 318 mb)

My Dockerfile

FROM openjdk:8
RUN wget -O /tmp/zeppelin-0.8.2-bin-netinst.tgz https://mirror.downloadvn.com/apache/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-netinst.tgz
RUN tar -xvzf /tmp/zeppelin-0.8.2-bin-netinst.tgz -C /opt && rm /tmp/zeppelin-0.8.2-bin-netinst.tgz
EXPOSE 8080

I build the docker images & run container

docker build -t test:1.0 .
docker run -p 8080:8080 -it test:1.0 /bin/bash

And start zeppelin manually

/opt/zeppelin-0.8.2-bin-netinst/bin/zeppelin-daemon.sh start

I received the result

Zeppelin start                                             [  OK  ]

But when I access zeppelin from the browser at http://localhost:8080/, I received:

This page isn’t working
localhost didn’t send any data.
ERR_EMPTY_RESPONSE

I tried run the command bin/zeppelin.sh but nothing appeared. Where did I go wrong?

I checked my container with docker ps command and the result sas:

5d37f4a18a53        test:1.0            "/bin/bash"         27 minutes ago      Up 27 minutes       0.0.0.0:8080->8080/tcp   brave_bardeen

If I telnet from the docker host: telnet localhost 8080 and it works. Why Can't I access zeppelin from the browser?

Thanks & Regards


Solution

  • I found some useful post: Zeppelin fails to load on docker: logErrors docker zeppelin

    We need to set ZEPPELIN_ADDR=0.0.0.0, now i can access zeppelin from browser localhost

    docker run -p 8080:8080 -e ZEPPELIN_ADDR=0.0.0.0 -it test:1.0 /bin/bash