The DeepHub® bundle is a Docker Compose bundle that consists of three Docker containers. This configuration is ideal for the DeepHub®, as virtualization and containerization provide the following clear advantages:
- Virtualization allows for easy switching of (host) machines
- Virtualization allows for hardware simulation
- Virtualization allows for seamless testing with different operating systems
- Containers are fast and lightweight
The general architecture of the DeepHub® bundle is illustrated below.
In this configuration, there is a host machine - referred to as Docker Host. It's connected with a public IP address to a real network.
There is a virtual network where the following three Docker containers are running:
Hosts the backend. Everything that provides the REST API of the DeepHub® is running here.
Acts as a proxy. The proxy here is required because on one port, you only have one service running and everything needs to run on port 8081. Therefore, this acts as a reverse proxy and forwards subpaths to the containers for the DeepHub® UI and DeepHub®. In order to reach this container from the outside, there is port forwarding - port 8081 from the Docker Host is mapped by Docker to port 8081 of the web server. If you make a request to the Docker Host on this port, it first gets forwarded to the web server, and based on the path, the web server forwards it to one of the other two containers.
- /deephub is forwarded to the DeepHub® container
- /deephub-ui is forwarded to the DeepHub® UI container
When deploying the containers, docker-compose starts all three containers and creates a shared IP network. The instances within the containers communicate via this shared IP network.
Within the bundle, there is a file "docker-compose.yml". This is the Compose file that defines the services used in the bundle. Each service defines a separate Docker image and its associated Docker container. An example docker-compose.yml file is illustrated below with explanations for a few keys: