Unblock O3 local deployment via docker-compose.yml?

Hi @raff & @ibacher & @jnsereko, I’m dog-fooding the O3 deployment on a local M1 Mac right now.

I’ve installed Docker Desktop (including Docker Compose), and using the docker-compose.yml file, I’ve successfully got the 4 expected containers running:

Yet when I go to http://localhost/ , O3 never fully loads the login screen (or any screen); at best I get the grey OpenMRS background logo, but that’s it. Here’s what I see:

I cross-checked that dev3 is working (i.e. that nothing got pushed to the latest builds that might have brought it, and my instance, down); it’s slow to load (working with lower bandwidth a.t.m.) but does eventually load.

Should SPA_CONFIG_URLS be blank here: openmrs-distro-referenceapplication/docker-compose.yml at 78d6e5946f8b14ed3203d7ccf37d9db4ec3fadd3 · openmrs/openmrs-distro-referenceapplication · GitHub

Any gut sense about what I might be missing or doing wrong?

1 Like

Sorry @grace that you are facing this. I think the backend ain’t starting correctly (backed dies at startup) hence any request to the backend returns 404.

Am just wondering why it starts fine on GitHub actions, otherwise, all tests here would be failing cc @dkayiwa

1 Like

@grace please try restarting. Occasionally OpenMRS backend fails to startup properly after initial setup. I didn’t track down what’s happening yet. If it doesn’t help, then please share logs from the backend container.


so probably @grace you can:

  • stop all running docker images
  • pull the latest docker images
  • delete the old images with docker image rm -f -v -l IMAGE_ID
1 Like

@grace i used your instructions here: O3 Implementer Documentation: Set Up, Configure & Deploy - Projects - OpenMRS Wiki and got exactly the same problem as you did. On looking at the network tab, the call to session was returning a 302. On looking at the general http headers, the Request URL was http://localhost/openmrs/ws/rest/v1/session and for the Response Headers, the Location was http://localhost/openmrs/initialsetup which looked like OpenMRS was still initialising. Therefore because the app tries to make REST calls before the backend is done with the startup process, you will end up breaking the application. I confirmed this by removing the docker volumes and run the docker setup afresh, but this time giving the backend time to properly start before accessing the frontend app, and all turned out well.

This looks like what was reported on the ticket that you assigned to @corneliouzbett [RA-1769] Calling REST API during initialization break Reference Application - OpenMRS Issues


Yeah… one of the more troubling limitations of 3.x is that it doesn’t work well when the backend is just starting up. Either we should redirect the user to the initialsetup page or we should come up with something similar for the 3.x UI to do while waiting for the backend to startup.

This happened to me as well. Cleaning up containers and volumes helped.

1 Like