I have an automated build set up using a combination of a DigitalOcean Droplet, DigitalOcean Container Registry, Docker Engine, Docker Compose version 2, and GitHub Actions.
For some reason, after deploying the application it broke because a PHP dependency isn’t available in the PHP container. Oddly, I can deploy the same application to the Docker daemon on my development machine, using the same images and it works because the dependency is there.
docker compose images against the local and remote Docker daemons show that both are using the same, and correct, image tag for the PHP container.
docker image inspect with the id of the PHP image used by the container shows the correct image is being pulled from the repository in the DigitalOcean Container Registry in both the local and remote deployments.
Yet, somehow, the remote version of the app is missing a dependency, despite it being listed in composer.json if I exec into the container, and it has development dependencies, which the local deployment doesn’t.
To attempt to debug the problem, I’ve pared back the deployment configuration script, and refined the Dockerfiles and Docker Compose configuration files. These changes had no effect.
The thing that seems to have solved the issue is removing sufficient tags in the DigitalOcean Container Registry repository, such that it didn’t exceed the quota. It’s currently at around 70% of the quota.
After removing the excess images and going back down under quota, the subsequent deployment succeeded and the application works.
Given that this change resolved the situation, is there some undocumented limitation or bug in the container registry if the storage quota is exceeded?