So, after a few days of trying out various configurations, I think I've found the solution.
I think the key flags that were missing were:
-"--entryPoints.websecure.transport.respondingTimeouts.readTimeout=420"
- "--entryPoints.websecure.transport.respondingTimeouts.writeTimeout=420"
- "--entryPoints.websecure.transport.respondingTimeouts.idleTimeout=420"
I've posted a more detailed writeup with the full docker-compose file here.