POP2016 Online Programming
POP2016 (Public Online Programming) is an online programming system, where users can write and run programs online. It can support PHP, Python, C++, Javaweb, etc, and has applied to some professional courses such as Introduction to Computing.
The project mainly consists of three parts: the server side, the front-end, and support plugins. I mainly worked on the server side, and I used Docker technology and Controller-Runner mode to support the server.
The figure above is the main framework of the server side. As we can see, there are three sections: Controller, Monitor and Container Manager. The Controller will interact with front-end, when there is a request, the Controller will select a node according to its scheduling algorithm, and send a message to the Container Manager. The Container Manager will allocate a new container, mount the user's code, map the port, handle the standard I/O and error logs. It's a daemon, and will not record anything.
This is my graduation project. You get the source code, read my dissertation, or just watch the demo video to learn how it works.