flathub / com.visualstudio.code

https://flathub.org/apps/details/com.visualstudio.code
134 stars 67 forks source link

devcontainer will not start: 'buildx' is not a docker command #508

Open seanpk opened 3 months ago

seanpk commented 3 months ago

It would be good to improve the documentation and the default experience for using devcontainers. I've made progress, but it doesn't seem like I have a working setup yet.

I have done the following in the process of trying to make it work in the flatpak (which appear to all be necessary to have got to this point):

Exposed /run/docker.sock to the container with:

flatpak override --user --filesystem=/run/docker.sock com.visualstudio.code

Changed the paths to docker and docker-compose in my settings.json, i.e.:

    "dev.containers.dockerComposePath": "/run/host/usr/bin/docker-compose",
    "dev.containers.dockerPath": "/run/host/usr/bin/docker",

But the devcontainer will not start because it cannot find buildx:

[918 ms] @devcontainers/cli 0.56.2. Node.js v18.17.1. linux 6.8.1-arch1-1 x64.
[918 ms] Start: Run: /run/host/usr/bin/docker buildx version
[931 ms] 
[931 ms] docker: 'buildx' is not a docker command.
See 'docker --help'

[931 ms] Exit code 1

I've also tried adding a link from /usr/bin to docker-buildx (there was already one there for docker-compose).

If I open an integrated terminal, I can reproduce the failure with:

$ /run/host/bin/docker buildx version
docker: 'buildx' is not a docker command.
See 'docker --help'

And then I got it to work by creating scripts in /usr/local/bin that I point to in my settings.json:

    "dev.containers.dockerComposePath": "/run/host/usr/local/bin/in-flatpak-do-host-spawn_docker-compose",
    "dev.containers.dockerPath": "/run/host/usr/local/bin/in-flatpak-do-host-spawn_docker",

The file contents are as follows: /usr/local/bin/in-flatpak-do-host-spawn_docker

#!/bin/bash

/app/bin/host-spawn docker "$@"

/usr/local/bin/in-flatpak-do-host-spawn_docker-compose

#!/bin/bash

/app/bin/host-spawn docker-compose "$@"

But then the devcontainer startup process seems to hang here:

[1650 ms] Start: Run: /run/host/usr/local/bin/in-flatpak-do-host-spawn_docker-compose --project-name 28th-ces_devcontainer -f /home/sean/Making/RoleModel/28th-ces/.devcontainer/docker-compose.yml -f /home/sean/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.build-1710714627644.yml -f /home/sean/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.containerFeatures-1710714765504.yml up -d --no-recreate
[+] Running 3/3
 ✔ Container 28th-ces_devcontainer-app-1    Started                        0.0s 
 ✔ Container 28th-ces_devcontainer-db-1     Running                        0.0s 
 ✔ Container 28th-ces_devcontainer-cache-1  Running                        0.0s 
[1985 ms] Start: Run: /run/host/usr/local/bin/in-flatpak-do-host-spawn_docker ps -q -a --filter label=com.docker.compose.project=28th-ces_devcontainer --filter label=com.docker.compose.service=app
[2021 ms] Start: Run: /run/host/usr/local/bin/in-flatpak-do-host-spawn_docker inspect --type container ab765af91650
[2062 ms] Start: Inspecting container
[2062 ms] Start: Run: /run/host/usr/local/bin/in-flatpak-do-host-spawn_docker inspect --type container ab765af916503e0639de70401328005369601b9e56890d74a52c0a9fab5e9139
[2104 ms] Start: Run in container: /bin/sh
[2112 ms] Start: Run in container: uname -m