The final step to making Barely SMS ready for production deployment is removing the React development server from the UI service. The development server was never intended for production use because it has many parts that aid developers, but ultimately slow down the overall user experience and have no place in a production environment.
Instead of using a Node.js based image, you can use a simple NGINX HTTP server that serves static content. Since this is a production environment and you don't need a development server that builds UI assets on the fly, you can just use the create-react-app build script to build your static artifacts for NGINX to serve:
npm run build
Then, you can change the Dockerfile.ui file so that it looks like this:
FROM nginx:alpine EXPOSE 3000 COPY nginx.conf /etc/nginx/nginx.conf COPY build /data/www CMD ["...