containers / podman-desktop

Podman Desktop is the best free and open source tool to work with Containers and Kubernetes for developers. Get an intuitive and user-friendly interface to effortlessly build, manage, and deploy containers and Kubernetes — all from your desktop.
https://podman-desktop.io
Apache License 2.0
4.78k stars 301 forks source link

compose onboarding and installation #4444

Closed benoitf closed 2 weeks ago

benoitf commented 1 year ago

Is your enhancement related to a problem? Please describe

When I click on the workflow to install compose, I click on next/next/next

but to make it really work I need to install it system wide

so I find it confusing that I have a prompt with a toggle

Describe the solution you'd like

I would expect that I should always click on the next button and by using default button being selected at the end I have a fully functional 'podman compose' command

But I'm asked at one step with a toggle

image

and if I click next it will just do nothing.

I would expect that it prompts me ok but 'podman compose' won't work are you sure yes/no and clicking next /next it will install it globally

so, in short: if I only click on all next buttons I expect to have at the end something working

while here there are disclaimers displayed but the default workflow (clicking next/next/next) is not trying to install it globally

Describe alternatives you've considered

No response

Additional context

No response

mairin commented 1 year ago

@benoitf It's a toggle design-wise because it's an option. Some users may not have permissions to install system-wide. Some users may not want it to be installed system wide. I don't know what the ratio is there, but I would expect something to be done by hitting next to be something that everyone wanted (if they wanted to install Podman, or Compose, or whatever the name of the onboarding flow they're in is.)

Does that make sense?

benoitf commented 1 year ago

hello @mairin

The problem to me is that at the end of the workflow I expect to be able to run podman compose and that it works

but in the current implementation it doesn't

at the end of the workflow if I do podman compose I have

podman compose --version                                                                                                                                                                                                        
Error: exec: "docker-compose": executable file not found in $PATH

The problem is that to use podman compose it doesn't require to be installed system-wise

but in the workflow I can see the text Compose will be installed in the next step

image

and then

image

and then I see a screen with too many sentence / details

image

so here

  1. I expect that the previous step would have tell me that now podman compose is enabled

  2. Only if I want to use docker-compose it could tell me do you want to install it system wise or the toggle but it could be a checkbox as I don't really need that.

Coming back to the 1. fact

If I look at podman source code https://github.com/containers/podman/blob/19c870da0d4923b2bf2d62b5d424da5a649b4d40/cmd/podman/compose.go#L79

I can provide a custom PODMAN_COMPOSE_PROVIDER environment variable

a. so Podman Desktop could tell me where the docker-compose file as been downloaded and I could use in a SHELL

PODMAN_COMPOSE_PROVIDER=~/.local/share/containers/podman-desktop/extensions-storage/podman-desktop.compose/bin/docker-compose podman compose --version                                                                               ✔
>>>> Executing external compose provider "/Users/benoitf/.local/share/containers/podman-desktop/extensions-storage/podman-desktop.compose/bin/docker-compose". Please refer to the documentation for details. <<<<

Docker Compose version v2.23.0

so it works without using a system wide installation

b. Podman Desktop could tell me that it will update my ~/.zprofile (to insert $PODMAN_COMPOSE_PROVIDER inside) and also check the value if defined to check if property env is correctly updated/set

c. looking another part of podman source code

https://github.com/containers/common/blob/3db93544ab362e53d5037481e2ca8473497620db/pkg/config/default_darwin.go#L25-L31

and https://github.com/containers/podman/blob/main/cmd/podman/compose.go#L88-L98

it searches in /usr/local/bin or /opt/homebrew/bin but not only in system wide folders, it also searches in use $PATH

so podman desktop could add ~/.local/share/containers/podman-desktop/extensions-storage/podman-desktop.compose/bin to the $PATH environment variable and asking the user to create a new shell where it'll work

it seems podman's code check also $HOME/.docker/cli-plugins/docker-compose but I think here there is a bug in podman's code as it's expecting it's in the user PATH while it is not.

but to sum up, we should have podman compose command working at the end of the onboarding flow without the need to install it system-wide

mairin commented 1 year ago

@benoitf ah ok i understand. What I would have expected, if I didn't opt into system-wide installation, that 1. c or 1. b would have been done and I wouldn't have had to think about it. Is that possible to do?

There is a mockup to cover the case where we can't find it in the path:

Screenshot from 2023-10-22 18-35-54

These do come across a bit cluttered, there's a few aesthetic tweaks I'd suggest to bring them closer to the mockups' appearance which I think are less overwhelming? I could file tix for each.

mairin commented 1 year ago

(filed this: https://github.com/containers/podman-desktop/issues/4462)

deboer-tim commented 1 year ago

Beside the UI tweaks/clutter, I still think there's a core issue here:

birla commented 6 months ago

I think this issue has been fixed. The setup now doesn't prompt for a toggle, rather informs the user that system-wide installation is mandatory to get it working.

odockal commented 4 months ago

@benoitf We can close this one, right?

benoitf commented 2 weeks ago

yes