Skip to main content
Version: Next

Docker Environment

docker

In order to provide a consistent development environment to everyone, we used Docker to containerize all our application components (as seen in the Deployment Diagram), this gave us good portability, which is also useful for the deployment phase, where we won't have to worry about dependencies or version control, while also improving our scalability.

To orchestrate all our containers, we're using Docker Compose, this allows us to define all necessary deployment parameters like ports, volumes and image version. It also helps launch and stop all containers at once, again helping both in the development and production environments.

Table of contents

  1. Docker Containers
  2. Docker Networks
  3. Docker Volumes

Docker Containers

  • frontend (running React)
  • backend (running Spring Boot)
  • mysqldb (relational database)
  • mongodb (nosql database for unstructured data)
  • nginx (reverse proxy)

Docker Networks

Docker also allows us to create a custom network that connects all our services. This network (evalmed-network) allows services to reference each other by their service names and creates a dedicated bridge network, giving us isolation.

Docker Volumes

Volumes are persistent data stores for containers. When created their stored within a directory on the Docker host. Our volumes consist of:

  • db - used by mysql
    • mongodb_data - used by mongodb to store mec data