All the materials developed during the development of my research "Automatic Service Containerization with Docker", which is the basis of my master thesis and of a scientific paper that will be published posteriorly.
- Download the main repository and its subprojects with:
git clone --recurse-submodules [email protected]:Raidenkyu/automatic-service-containerization.git
- change to the
hermit/
directory and run:
npm run install-hermit
- change to the
dockerfile-diff/
directory and run:
npm run install-dockerfile-diff
- To get a random project from GitHub, change to the
projects-fetcher/
directory and run:
npm start
If you receive an error saying that the limit of requests was execeed, please wait some minutes before retrying. If the operation succeeds you can find a project in the file projects.csv
.
-
Navigate to the url of the project fetched in the previous step and clone the the respective project.
-
Change to the directory of the project and see if the original dockerfile of the project is too complex to hermit or not. Then rate the status of the project in the projects dataset as accepted or discarded. If the project was discarded, you don't need to follow the remaining steps.
-
Run hermit to generate the dockerfile with:
hermit -c -t <number of seconds to timeout>
Usually 10 seconds are enough.
- Now you should have both the original "Dockerfile" and "Dockerfile.hermit". To compare them and evaluate hermit's dockerfile run:
dockerfile-diff Dockerfile Dockerfile.hermit
If evaluation process ended without problems then update the "generation" column in the file projects.csv
with "successful". If not update with "failed-build", but if you think that by running some installation commands it will work update with "require-extra-steps". In the case of "failed-build" then you can ignore the following instructions.
- To generate the file evaluations.csv the results collected by dockerfile-diff run:
dockerfile-diff print
-
Change to the
hermit-study/
directory and update the filesprojects.csv
andevaluations.csv
in theres/
directory with the versions that resulted from this experiment. -
Open
hermit.ipynb
in a Jupyter Notebook and analyse how the evaluations changed.