This framework is to run simulations, as well as being able to obtain plots from the results in an easy-one command manner.
Simulations supported:
- Snow family: https://github.com/logos-co/consensus-research (default)
In order to build the image, simply run:
docker build -t desired_name_of_docker_image .
In order to tell the container what to do, you need to specify the options in a configuration file, as json.
Supported parameters:
- Run parameters
--runor-rboth(will be default) (to-do)simulationplotter
- Simulation type
--protocolor-p(to-do)snow-family(default, not changeable)
- Configuration file
--configuration-fileor-cf- <configuration_file_name.json>
In order to share the information, plots, and so on between the host and the container, a shared folder as example is given in this repository. But any path would work for this.
docker run --rm -v </your/path/to/desired/folder>:/app/shared <desired_name_of_docker_image> -r <simulation> -cf <configuration_file_name.json>
The parameters inside < > can be changed. Where:
docker run --rmwill launch a docker container, and after it finishes, it will automatically destroy itself. The data generated will be saved in the mount folder.-v </your/path/to/desired/folder>:/app/sharedis the mount folder that will be used to share data between the container and the host./app/sharedis a internal framework location, so this needs to remain unchanged.<desired_name_of_docker_image>is the docker image name previously created with thebuildcommand.-r <simulation>is the type of execution we want. It can be only simulation withsimulation, only plotting withplotter, or simulation and plotboth(to-do).-cf <configuration_file_name.json>is the configuration file where we set up what we want to do in the execution. This file is assumed to be in our shared host folder, so the full path is not needed. If we want the file in a sub-folder likeshared/test_1/config_example.json, you need to add the relative path fromshared. In this example, it would be-cf test_1/config_example.json
So, assuming we are in the root of this repository, an example of use would be:
docker build -t simulation-framework .
docker run --rm -v /mnt/d/Projects/SimulationsFramework/shared:/app/shared simulation-framework -r simulation -cf config_example.json
(to-do)