The simplest way to develop Dockside is within Dockside!
Dockside can also be developed and built within Dockside within Dockside, or indeed {within Dockside}^N for any reasonable N >= 1.
Simply:
- Launch a devtainer from the Dockside profile.
- Open the devtainer IDE
git pull
the latest main branch from the Github repo- Modify the code, rebuilding the dockside client and restarting the server and event daemon as necessary.
- Test, by clicking
Open
on the devtainerdockside
router. Admin login credentials can be obtained by runningdocker logs <devtainer-name>
within the IDE terminal. - Build a test image, and launch within a new Dockside devtainer.
The main components of the Dockside application are:
- The Request Proxy, written in Perl and embedded in NGINX using mod-http-perl
- The Dockside Server, currently written in Perl and also embedded in NGINX using mod-http-perl
- The Dockside Client, written in Vue (HTML/CSS/JavaScript)
- The Dockside Event Daemon, written in Perl
- The Eclipse Theia IDE, an open-source IDE framework, written in typescript
Additional optionally-enabled components are:
- A Dehydrated service, which generates and maintains LetsEncrypt SSL certificates using dehydrated
- A Bind9 service, which is needed to support the generation of LetsEncrypt wildcard SSL certificates
- A Logrotate service, which rotates Dockside and NGINX logs.
Whether these components are enabled depends on the command-line options given when Dockside is launched.
To rebuild the client, run:
cd ~/dockside/app/client && npm run build
To watch continuously for changes to client code, run:
cd ~/dockside/app/client && npm run start
To restart the Dockside server, run:
sudo s6-svc -t /etc/service/nginx
To restart the Dockside event daemon, run:
sudo s6-svc -t /etc/service/docker-event-daemon
As Eclipse Theia is a third party open source application, developing it is largely outwith the scope of this documentation, the exceptions being updating the version of Theia running within Dockside, and reimplementing the Dockside-specific patches when required.
To learn more about these exceptions, see updating Theia.
To rebuild the documentation html, run:
~/.local/bin/mkdocs build
To launch a fresh instance of a modified Dockside codebase, it is necessary to build a Dockside image.
This is useful to do when you want to test that your modified Dockside launches as expected, or when you want to launch a modified version of Dockside in production on another host.
For instructions, see Building a Dockside image and Building a Production Image.