The official Docker image apache/zeppelin can be used.
Create a ShinyProxy configuration file (see application.yml for a complete file), containing:
proxy:
specs:
- id: zeppelin
display-name: Apache Zeppelin
container-image: apache/zeppelin:0.8.1
websocket-reconnection-mode: None
port: 8080
In order to store the notebooks, the volumes on the host need to be mounted to point to /zeppelin/notebook
inside container (and to /zeppelin/logs
for the logs):
container-volumes: [ "/tmp/zeppelin/#{proxy.userId}/notebook:/zeppelin/notebook", "/tmp/zeppelin/#{proxy.userId}/logs:/zeppelin/logs" ]
This will ensure that each user's notebooks are stored in a separate directory on the server. By modifying the host paths other scenarios can be implemented, such as shared notebook storage per user group, or shared storage for all users.
In addition to the notebooks, also the "interpreter binding" configuration need to be stored.
This can be achieved by creating a folder on the Docker host containing conf
files from Apache Zeppelin:
# creating `conf` folder
VERSION=0.8.1
cd /tmp/zeppelin
wget -O zeppelin.tar.gz https://github.com/apache/zeppelin/archive/v${VERSION}.tar.gz
tar --strip-components=1 -xvf zeppelin.tar.gz zeppelin-${VERSION}/conf
rm zeppelin.tar.gz
(alternatively run the helper script ./createConf /tmp/zeppelin 0.8.1
)
and then mounting it to the container:
container-volumes: [ "/tmp/zeppelin/#{proxy.userId}/notebook:/zeppelin/notebook", "/tmp/zeppelin/#{proxy.userId}/logs:/zeppelin/logs", "/tmp/zeppelin/conf:/zeppelin/conf" ]
Note that here the conf
folder is shared across users.
(c) Copyright Open Analytics NV, 2019-2021.