Search code examples
dockervisual-studio-codevscode-remote

How to attach VSCode to a remote Docker container while setting the correct user


I start a Docker container with a special bash script that runs the container and then creates a user X with a dynamic name, UID and GUID in the container. I can then bash into the container and perform actions as this user X. The script also creates an 'alias' user named vscode with the same UID as the earlier created dynamic user X.

In VSCode I can attach to this container. Two questions:

  1. How can I setup VSCode to perform all actions as the 'vscode' user or as the user X? (When using devcontainer.json to create the container this is trivial, but now I attach to an existing container and devcontainer.json is not used).
  2. In devcontainer.json you have the option to automatically install extensions. Which settings file do I need to create to automatically install extensions when attaching to a container?

The solution should be automated. Eg. manual intervention and committing the image as suggested below is possible but will make it much harder for users to just use my Docker image.

I updated to vscode 1.39 and tried to add:

ADD server-env-setup /root/.vscode-server/server-env-setup

But "server-env-setup" seems to be only used for WSL.


Solution

  • VSCode now implements a "remoteUser" property ehich you can set in the image configuration. This will ensure that VSCode logs into the container as the correct user.