In fairness, I should start by saying I’m new to the platform and the codebase, and therefore have no idea how rebuild currently works under the hood. However, my current understanding is that rebuilding:
- stops the current container
- constructs a new container with data from the source tree
- waits for you to start the new container
From a DevOps-oriented perspective, why can’t the new container be built (perhaps in another branch or temporary directory) while the old one is still running? That seems like it would make swapping the new container for the old one a much faster process (at least in terms of downtime), perhaps on the order of seconds rather than minutes.
If the containers are using storage volumes that don’t get destroyed when the container is rebuilt, I’m not even sure that configuration or database changes (e.g. new messages) need to be handled specially in for this use case, meaning that container building shouldn’t be so tightly coupled to container status.
Is this simply an issue that no one has turned their attention to yet, or is there an existing architectural decision that requires one container to be stopped before another can be built?