This is a step to step guide to create runnable docker images for a Zenodo replication package upload.
Setup Preparation
- Substitute
<NAME>
in the following steps with your extension name. - We provide a docker-compose configuration for ExplorViz 1.4.0, which is used in the following.
Creating and Exporting the Docker Images
- Go into your
explorviz-frontend
folder
If you have no frontend extension, go straight to step 2.
-
Install frontend extension via
ember install https://github.com/ExplorViz/explorviz-frontend-extension-<NAME>
-
Delete the
dist
folder -
Build frontend artifact via
ember build --prod
-
Modify dockerfile, only necessary if more extra ENV variables are needed
-
Modify
explorviz-nginx.conf
, if additional reverse proxy locations (endpoints) are used for your frontend extension -
Modify
prod-env-updater.sh
, only if ENV variables were added in the dockerfile -
Build frontend docker image via
docker build -t explorviz-frontend:evaluation .
If you have no backend extension, go straight to step 10.
-
Build your backend extension docker image via
docker build -t explorviz-backend-extension-<NAME>:evaluation .
-
Modify
docker-compose-1.4.0-evaluation.yml
and add your docker image to the dockerfile. Keep the dependencies in mind -
Run the backend and built frontend in docker via
docker-compose -f docker-compose-1.4.0-evaluation.yml up -d
-
Test if everything works, open
http://localhost:8090
in your browser -
Save all images via
docker save -o docker-evluation-images.tar $(docker-compose config | awk '{if ($1 == "image:") print $2;}' ORS=" ")
Importing the Docker Images
Necessary steps in the setup-experiment.md
created for Zenodo should contain the following steps:
- In the replication package for the evalution the user just needs to load all Docker images via
docker load -i docker-evluation-images.tar
- Run all images in Docker via
docker-compose -f docker-compose-1.4.0-evaluation.yml up -d
docker-compose-1.4.0-evaluation.yml
# Start ExplorViz version 1.4.0
# Monitored applications can be connected
# Environment Variables are based on the
# properties file of each service, e.g,
# https://github.com/ExplorViz/explorviz-backend/blob/master/user-service/src/main/resources/explorviz.properties
version: "3.2"
services:
### ExplorViz Services ###
user-service:
image: explorviz/explorviz-backend-user-service:1.4.0
container_name: explorviz-backend-user-service
depends_on:
- mongo-user
- kafka
environment:
- MONGO_HOST=mongo-user
- EXCHANGE_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
settings-service:
image: explorviz/explorviz-backend-settings-service:1.4.0
container_name: explorviz-backend-settings-service
depends_on:
- mongo-settings
- kafka
environment:
- MONGO_HOST=mongo-settings
- EXCHANGE_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
landscape-service:
image: explorviz/explorviz-backend-landscape-service:1.4.0
container_name: explorviz-backend-landscape-service
depends_on:
- kafka
environment:
- EXCHANGE_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- EXCHANGE_KAFKA_TOPIC_NAME=landscape-update
expose:
- "10135"
broadcast-service:
image: explorviz/explorviz-backend-broadcast-service:1.4.0
container_name: explorviz-backend-broadcast-service
depends_on:
- kafka
environment:
- EXCHANGE_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- EXCHANGE_KAFKA_TOPIC_NAME=landscape-update
history-service:
image: explorviz/explorviz-backend-history-service:1.4.0
container_name: explorviz-backend-history-service
depends_on:
- mongo-history
- kafka
environment:
- MONGO_HOST=mongo-history
- EXCHANGE_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- EXCHANGE_KAFKA_TOPIC_NAME=landscape-update
analysis-service:
image: explorviz/explorviz-backend-analysis-service:1.4.0
container_name: explorviz-backend-analysis-service
ports:
- "10133:10133"
discovery-service:
image: explorviz/explorviz-backend-discovery-service:1.4.0
container_name: explorviz-backend-discovery-service
ports:
- "8083:8083"
depends_on:
- id-generator
frontend:
image: explorviz-frontend:evaluation
container_name: explorviz-frontend
ports:
- "8090:80"
environment:
- API_ROOT=http://localhost:8090
depends_on:
- discovery-service
- landscape-service
- analysis-service
- user-service
- history-service
### Software Stack ###
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
expose:
- "2181"
kafka:
container_name: kafka
image: wurstmeister/kafka
depends_on:
- zookeeper
expose:
- "9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
id-generator:
image: redis
container_name: explorviz-id-generator
command: ["redis-server", "--appendonly", "yes"]
expose:
- "6379"
volumes:
- explorviz-id-generator-data:/data
mongo-user:
image: mongo
container_name: explorviz-backend-user-mongo
command: mongod --port 27017
volumes:
- explorviz-user-mongo-data:/data/db
- explorviz-user-mongo-configdb:/data/configdb
expose:
- "27017"
mongo-history:
image: mongo
container_name: explorviz-landscape-mongo
command: mongod --port 27018
volumes:
- explorviz-history-mongo-data:/data/db
- explorviz-history-mongo-configdb:/data/configdb
expose:
- "27018"
mongo-settings:
image: mongo
container_name: explorviz-settings-mongo
command: mongod --port 27019
ports:
- 27019:27019
volumes:
- explorviz-settings-mongo-data:/data/db
- explorviz-settings-mongo-configdb:/data/configdb
volumes:
explorviz-user-mongo-data:
explorviz-user-mongo-configdb:
explorviz-history-mongo-data:
explorviz-history-mongo-configdb:
explorviz-settings-mongo-data:
explorviz-settings-mongo-configdb:
explorviz-id-generator-data: