Docker Community Forums

Share and learn in the Docker community.

Advice about deployment

Hello,

I am new to docker so be patient with me.

I have a web app that is supposed to execute processes on the client(like opening a directory on file explorer,on windows). This app is only for internal use within the organization i work for. Docker seems a good fit because i could run the webapp on a container, and execute the processes using a named pipe on a docker volume, accessible both by the host and the container.

This requires to install docker on every client pc that wants to run the web app. So i would not run that container on our server, but instead i would run a container on each pc that is supposed to run the app.(each pc would be a docker host).

My question: Is this a proper use of docker? I am worried that installing docker on our 50 pcs could be too much.

Thanks for your support,

regards

There’s a lot to cover here!

First, web apps cannot execute client processes - they have no direct access to the host OS where the browser is running. You can trigger file upload dialogs but couldn’t run an executable. That said, developing your web app with Docker and using containers during deployment is practical.

Why would all users need Docker? Are you suggesting they run individual instances of your web app? Docker containers are (mostly) isolated from the underlying OS and file system. It is possible to bind mount host folders, but you couldn’t directly launch a Windows executable.

My Docker for Web Developers book and video course may help you. It describes how to create web applications using Docker.

Hello Craig,

thanks for your reply. I do agree with you on the fact that web apps cannot execute client processes. That is what I was trying to overcome. I know that a sandboxed environment is a good thing for security.
But I think that for a non public web app I could make an exception.Why can custom protocol handlers like “mailto” open my outlook desktop app but I cannot execute a script I wrote. So this is a reason I posted that question.
Anyway Yes I was suggesting that all users would be running Docker (I also think it would be strange). Your reply was very valuable to me .
I’ve read a Docker book (Docker Deep Dive), and maybe I will read your book as well.
Thanks for your feedback, it really cleared my doubts.
Best regards

Craigbuckler is right, in your scenario Docker has its place in serving your webapp. The client part is by no means a task that should be solved in docker.

I see where you come from: web browsers handle different uri schemas (mailto is just that) and filetypes.

If your scenario follows the same approach, where a user sends a request to the webapp, which in return responds directly with the uri schema (or as part of the payload) that is registerd in the browser, which will trigger an action on the host, there is a way. Register your own uri schema and register a default action for it, see: https://stackoverflow.com/questions/80650/how-do-i-register-a-custom-url-protocol-in-windows. You could potentialy role this custom uri schema handler out with Windows GPOs.

If you want a pub/sub styleof communication, where the server initiates the communication itself, your might want to consider developing a desktop app that registers itself at the server and waits for triggering messages from the server:)

I agree with @mayay. A web browser cannot launch an executable on the host OS. Imagine the virus-inflicting data-stealing chaos if it could!

mailto is a protocol handler. The browser does not launch the mail application - it tells the OS the user wants to send an email and the OS launches the default mail app (which could be a web app like Gmail).

Similarly, consider what happens when you double-click an image on your PC. A graphics viewer will open, but the image itself didn’t launch that executable - your OS decided what to do.

Docker won’t help on the client and is possibly confusing matters. From a practical point of view, Docker Desktop requires WSL2 (Windows May 2020 update) or Hyper-V (Windows Pro only) - I’d be amazed if all 50 users could run it.

It sounds to me like you need to write a Windows application, although you could also consider an Electron app. That would be able to launch executables or you could register protocol handlers which are triggered by the web app (assuming that’s still required?)

Thank you all for your comments. @meyay for days i tried to follow your advice but unfortunately chrome has some issues (it keeps asking for permissions). Thanks for the pub/sub hint, I think that would be the best way to achieve my goals. @craigbuckler I think I have to stick with a windows app too. This discussion helped me out a lot.

Also, sorry for asking about client processes executed by web apps, I know it is a “don’t” , but sometimes the questions you don’t make are those that remain without an answer.