Skip to content

Add more libraries to the grading containers

Gabriel edited this page Aug 5, 2022 · 5 revisions

Given the architecture of UNCode, the grading containers (Docker) that are in charge of running the student's submissions can be customized so that the environment in which the code to be graded is run may contain extra libraries.

containers_hierarchy

Adding the library, deleting the image, reconstructing the image

As the title states, based on the architecture shown in the picture above, the idea is to edit the respective Dockerfile JuezUN/INGInious-containers of the container you are interested in, then deleting all the images from the bottom until the edited container and finally re-build these containers.

For example, Lets say we're interested in OpenCV for c++, Java and Python, we'd first edit the multilang Dockerfile and add the following line:

RUN yum install opencv opencv-devel opencv-python

Now, whenever we rebuild this container, openCV will be added and submissions sent to this type of container can import said library. However, as containers in UNCode inherit in a hierarchical manner, we need to delete the children image of multilang: data_science. For this hypothetical case, you'd run:

docker rmi -f ingi/inginious-c-datascience
docker rmi -f ingi/inginious-c-multilang
docker rmi -f unjudge/inginious-c-multilang

docker build -t "ingi/inginious-c-multilang" grading/multilang
docker tag ingi/inginious-c-multilang unjudge/inginious-c-multilang
docker build -t "ingi/inginious-c-datascience" grading/data_science

Ofcourse, it is always and option to simply delete all images bottom-up and the rebuilding everything top-bottom. and there is a small script to do so. In case you simply prefer the "jack of all trades" inefficient route:

cd <your local directory path>/INGInious-containers
./clean-build-main-containers

Contributing

Check the repository JuezUN/INGInious-containers to learn how to start contributing to this repository, also, check the documentation: How to create a new container in case a new a new grading environment is needed.

Clone this wiki locally