Prerequisites
#############
Dependencies
-----------------
To solve the assignment, you require the following tools
* Java 11
* `Apache Maven `_ 3+
* `Docker `_ 20.10.12+
* `Docker Compose `_ 2.2.3+
We use Docker (Compose) to host a small development environment on your host.
Docker Compose
---------------
Throughout the course, you will work with several other technologies.
To save you from the hassle of installing and configuring additional system dependencies for these technologies,
we provide a compact development environment as a docker-compose file.
To run it, first install Docker and Docker Compose.
In the code :doc:`/template`, find the ``docker/`` folder containing the ``docker-compose.yml``.
This file defines the services and parameters.
From the folder, you can now start the services by simply running::
docker-compose up
or start it in detached mode::
docker-compose up -d
You can verify that all services started successfully via ``docker ps`` (i.e., ``docker_redis_1`` & ``docker_rabbitmq_1``).
You can stop the containers with::
docker-compose stop
or stop and remove them with::
docker-compose down
The first command will not remove the containers and therefore saves the state of the applications.
Which might be useful during development.
The services defined in the docker-compose file are deployed in the network named "dst". If you want that your docker
containers you are running can access the services from docker-compose, append your ``docker run`` command with ``--network dst``.
Further, the compose file exposes the service ports to your host.
That means you can also access them via ``127.0.0.1``.
We include detailed instructions to interact with each service in their respective assignment.