devpod
devpod copied to clipboard
Devcontainers implementation doesn't adhere to spec for the lifestyle script commands
What happened?
I've got a workspace running using the DigitalOcean and seems to be running fine. When I run any of the demo repos (eg, the Rust one) it works fine. When I run anything of my own (eg, my website) with my own Devcontainer (which works fine locally) I get some weird errors - even with --debug enabled they don't make much sense. It looks like it's a collection of errors. Clearly the unsupported type is the important bit, but it doesn't tell me what the type I'm using is (I don't have type specified in my devcontainer.json) so I can stop using that type.
This works fine when using devcontainers locally (using 0.40.0), so I'm wondering if it's that DevPod uses an older version of devcontainers internally.
I'm not necessarily asking for help solving the problem, but I'm after helping working out what the problem is because the logs seems to throwing an unhandled error.
Logs
[11:00:04] fatal exit status 1
agent error: Error trying to reach docker daemon: docker ps: exit status 1
Rerun as root: /home/devpod/.devpod/devpod agent workspace up --workspace-info H4sIAAAAAAAA/+xUXW/aSBT9K6vRPtowM/72GwKUetNARJxKbbVC83EN3mCP5RnTVIj/vhoDFYlC6O5LX/pka+acO/ec+7FD31T7pBsmAKU7VEqUoqrVZaVqqCrtrkqz7rhbKuSgrr+VYYwJ+KFLZMBdnzDqJsCFC5wLEYesYAlHDirURkKLUjRcqwqG2kYbDiRsGyWHQtUGno0eSihYtzHDH0no4aXXm1KYrgWUorUxjU6HQ9VAvWpZsx4ccExrMHogVDWkmIecUEm9JPZYRCAiWGKMMUSSC1oQjEPmM04xB+ZLiHyPRX4QgFckXhSQ8yzO/48vDQ4ZtWpb9iJ3qGaVTU2Wq9KwjRLAarR3UMXEuqx7a4+/We9hb4Or16wF6b4mlRLOQm61UBLsuVZdeyjTqjQLaJQujWq/nzlyzM46cF3A3kGiBWZKVedlBdqwqkEpoph6Lg5dHOY4Tr0wpf4X5KAN0+ZRg3yJIDjFOMXEIo5F7eX1VX1lQHlF+X/tmWNoe/BOzGtFcpBqrAXaAkY301m+nIzy0fJ+lH+wR1u26eBHSsdcTjmxFdS9zAPxpziHjyVNsofbZXY3upmek6QST9C6FLvYt0Onob0/aJAoNW0HJ+ZD9uUFMcCX4NlsNM6zT1n+eZlnd9P5Y37OI7hCPeiv6ThfTubj2+liOV5MJ9NZno0+PpxjbcAz8E2WX0PejcYfstl0mX++f5GtdulWNJ3rr/iltBfTm2w+OydtVE0uofP57XT20shmuSVLKpMiimKv8EjAZVJQj2FPeEx6cSI4BSkKHtOCBkUQF4FHqUeKOCJJhEVAolC+/d7+p6aHkjSgF2fj0D3pDjXMrK+0i4MkM+z+HeAhmoOk+lZvFJOPi49vb4aNKoyr1yd+Cxtg2o7RkTjc4gEZJMhBZc2EKbel+W4lqs4cu8Xe/APC3JRm3IKE2pRso09FP91O+kZ+EwDPIKxwve6MfRalX9Gfu8l8eb+Yf8om08X+D21Ug/7eO4iXNWtL6OfzDIHSrzukbMxNWXfPyEGsFdYcVsnQDo5Yg3jSXWWPcEFi7EWcEEok9hLuhwVgmUQBIYwEkR9GTAALQh4kYVAECSFJJEkSQsiFjOwaOTh/1U73tG9e7KG3TcYD8i7L7ZW5B0F754LctnotlzBBaFzggoeMxT4XvhcmEeWelUl8RqiIgiSmAUkSGnqeSIRkgU+LSEqeEP8Xy+0F7W3pnzoObQ2mL/7eOa5G+7//vbZ/r+3/tbb/BQAA//8BAAD//wc4rq7xCgAA --debug
Use /home/devpod/.devpod/agent/contexts/default/workspaces/mrsimonemms-github-io as workspace dir
unsupported type
github.com/loft-sh/devpod/pkg/types.init
/home/runner/work/devpod/devpod/pkg/types/types.go:12
runtime.doInit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:6329
runtime.doInit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:6306
runtime.doInit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:6306
runtime.doInit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:6306
runtime.doInit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:6306
runtime.main
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:233
runtime.goexit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/asm_amd64.s:1594
parsing devcontainer.json
github.com/loft-sh/devpod/pkg/devcontainer.(*Runner).prepare
/home/runner/work/devpod/devpod/pkg/devcontainer/run.go:68
github.com/loft-sh/devpod/pkg/devcontainer.(*Runner).Up
/home/runner/work/devpod/devpod/pkg/devcontainer/run.go:112
github.com/loft-sh/devpod/cmd/agent/workspace.(*UpCmd).devPodUp
/home/runner/work/devpod/devpod/cmd/agent/workspace/up.go:374
github.com/loft-sh/devpod/cmd/agent/workspace.(*UpCmd).up
/home/runner/work/devpod/devpod/cmd/agent/workspace/up.go:164
github.com/loft-sh/devpod/cmd/agent/workspace.(*UpCmd).Run
/home/runner/work/devpod/devpod/cmd/agent/workspace/up.go:98
github.com/loft-sh/devpod/cmd/agent/workspace.NewUpCmd.func1
/home/runner/work/devpod/devpod/cmd/agent/workspace/up.go:60
github.com/spf13/cobra.(*Command).execute
/home/runner/work/devpod/devpod/vendor/github.com/spf13/cobra/command.go:916
github.com/spf13/cobra.(*Command).ExecuteC
/home/runner/work/devpod/devpod/vendor/github.com/spf13/cobra/command.go:1044
github.com/spf13/cobra.(*Command).Execute
/home/runner/work/devpod/devpod/vendor/github.com/spf13/cobra/command.go:968
github.com/loft-sh/devpod/cmd.Execute
/home/runner/work/devpod/devpod/cmd/root.go:71
main.main
/home/runner/work/devpod/devpod/main.go:12
runtime.main
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:250
runtime.goexit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/asm_amd64.s:1594
devcontainer up
github.com/loft-sh/devpod/cmd/agent/workspace.(*UpCmd).Run
/home/runner/work/devpod/devpod/cmd/agent/workspace/up.go:100
github.com/loft-sh/devpod/cmd/agent/workspace.NewUpCmd.func1
/home/runner/work/devpod/devpod/cmd/agent/workspace/up.go:60
github.com/spf13/cobra.(*Command).execute
/home/runner/work/devpod/devpod/vendor/github.com/spf13/cobra/command.go:916
github.com/spf13/cobra.(*Command).ExecuteC
/home/runner/work/devpod/devpod/vendor/github.com/spf13/cobra/command.go:1044
github.com/spf13/cobra.(*Command).Execute
/home/runner/work/devpod/devpod/vendor/github.com/spf13/cobra/command.go:968
github.com/loft-sh/devpod/cmd.Execute
/home/runner/work/devpod/devpod/cmd/root.go:71
main.main
/home/runner/work/devpod/devpod/main.go:12
runtime.main
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/proc.go:250
runtime.goexit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/asm_amd64.s:1594
error parsing workspace info: rerun as root: exit status 1
github.com/loft-sh/devpod/pkg/agent.InjectAgentAndExecute
/home/runner/work/devpod/devpod/pkg/agent/inject.go:119
github.com/loft-sh/devpod/cmd.(*UpCmd).devPodUpMachine.func1
/home/runner/work/devpod/devpod/cmd/up.go:262
runtime.goexit
/opt/hostedtoolcache/go/1.19.9/x64/src/runtime/asm_amd64.s:1594
What did you expect to happen instead?
I would expect it to open. Or at least give me something useful to debug.
How can we reproduce the bug? (as minimally and precisely as possible)
Run my website
My devcontainer.json:
{
"name": "devcontainer",
"image": "ghcr.io/mrsimonemms/devcontainers/full",
"features": {},
"customizations": {
"vscode": {
"settings": {},
"extensions": [
"donjayamanne.git-extension-pack",
"EditorConfig.EditorConfig",
"waderyan.gitblame",
"esbenp.prettier-vscode",
"svelte.svelte-vscode",
"GitHub.vscode-github-actions"
]
}
},
"postStartCommand": {
"pre-commit": "pre-commit install --install-hooks -t pre-commit -t commit-msg"
}
}
Local Environment:
- DevPod Version: 0.1.7
- Operating System: linux
- ARCH of the OS: AMD64
DevPod Provider:
- Cloud Provider: digitalOcean
Anything else we need to know?
Aaaah, that's the cause. It seems that the postStartCommand (and others) only allows a string or array of strings, whereas the devcontainers spec allows strings, an array of strings or object of key/value string pairs.
I would suggest two things out of this:
- improved error handling (or a devcontainers validation command) to make errors like this easier to understand
- implement the spec correctly for the lifestyle script
Thanks for reporting. This is likely a duplicate of https://github.com/loft-sh/devpod/issues/163. We're certainly planning to implement this, so stay tuned.
@lizardruss yes, it looks like it.
The improved error handling suggestion isn't covered by #163, so I'd suggest that this ticket remains open (or a new ticket opened for that) to cover off that.
Ran into the same issue and was able to solve it by finding this ticket by google "unsupported type" and devpod. Was able to solve it by changing my postAttachCommand command to an array instead of an object.
@davidpp this has been solved in the v0.3.0 release