My application is a bunch of docker containers networked together using docker compose. Now I want to ship this entire stack as an easily runnable application to my users, who are either on Linux or Windows (and occasionally Mac).

Ideally the user doesn't even know that docker is involved, and it just looks like one app from most perspectives. I want it to be easy to install and maintain.

To further complicate things, many of the containers are actually dependent on nvidia-docker and GPU access for CUDA. This seems to just now be supported on Windows, albeit only Windows 11. In general, this greatly complicates my ability to ship anything easy-to-install.

Is there anything I can do to make this process easy for users (and myself)?

  • 1
    "Write once, run everywhere" is the Holy Grail of programming. Think: Microsoft (.NET), Oracle (Java) and the World Wide Web Consortium (HTML, CSS, ECMAScript). And now you want to add "universal deployment" to the mix. This problem is many orders of magnitude greater than you think it is. It is an order of magnitude order-of-magnitudes greater. May 14 at 22:34
  • 2
    Since Docker is effectively Linux-only, you will need some kind of virtual machine for other systems. Either your users install Docker to manage all of this (you can still provide some script frontend so that they don't have to manually use docker-compose), or you'll have to provide a Linux VM to users. But manually configuring GPU passthrough with VMs is going to be quite fiddly. There is no good solution.
    – amon
    May 15 at 10:37


Browse other questions tagged or ask your own question.