An undersold benefit of GraphQL is minimizing JavaScript footprint on domain logic. This can be hidden in the API by precomputing many things, and client-side logic can be reduced to presentation and event handling. Hand-rolled data munging and client-side caching are n't necessary, and there's a clean separation between the browser and the backed.
Docker seems like a half-baked half-measure between LXD and Kubernetes. LXD is brilliant for small scale, stateful pet systems, legacy applications with nonrefactorable state, applications that already work well within a Linux distribution (e.g. integrated with systemd), applications incompatible with Docker's overlay network virtualization opinion, and is great in development for developers that are well-versed in the unix-like userland. Kubernetes is the choice for large-scale systems with immutable architecture.
Another red flag on redux: recommended practice--query JSON over HTTP (likely backed by an RDBMS), renormalize the hierarchical data, and then reshape the renormalized data before passing to components.