本页介绍了如何使用 Cloud Code for VS Code 进行远程开发,即在用于构建、调试和部署应用的远程容器中打开代码库。这样一来,无论开发机器的操作系统如何,您都可以创建可移植的应用。
前提条件
除了安装 Cloud Code 扩展程序中所述的设置外,还需要安装 Remote Development VS Code 扩展程序包。
设置
如需设置包含 Dockerfile 和
Devcontainer.json
文件的.devcontainer
文件夹,并为您使用的语言配置这些文件,请依次点击Open a Remote Window(打开远程窗口)> Add Dev Container Config Files(添加开发容器配置文件)。或者,您也可以按照在容器中进行远程开发中的步骤操作。
按照提示操作后,您的工作区将包含:
Dockerfile - 用于定义容器映像,其中包含要安装在远程开发容器中的开发者工具。
Devcontainer.json
- 指示 VS Code Remote Tools 扩展程序如何运行远程开发容器。
打开 Dockerfile,然后添加安装 Google Cloud CLI 和 Skaffold 的说明。如需了解最新命令,请参阅安装指南。
在 Dockerfile 中,在
>> $HOME/.bashrc
命令之前添加用于复制 localhost 的 gcloud CLI 和 Skaffold 配置的说明。或者,您也可以重写命令以安装 gcloud CLI 和 Skaffold。# Copy localhost's ~/.kube/config file into the container and swap out localhost # for host.docker.internal whenever a new shell starts to keep them in sync. RUN echo '\n\ if [ "$SYNC_LOCALHOST_KUBECONFIG" == "true" ]; then\n\ mkdir -p $HOME/.kube\n\ cp -r $HOME/.kube-localhost/* $HOME/.kube\n\ sed -i -e "s/localhost/host.docker.internal/g" $HOME/.kube/config\n\ \n\ fi' \ if [ "$SYNC_LOCALHOST_GCLOUD" == "true" ]; then\n\ mkdir -p $HOME/.config/gcloud\n\ cp -r $HOME/.gcloud-localhost/* $HOME/.config/gcloud\n\ \n\ fi' \
打开
Devcontainer.json
文件,然后添加以下运行参数,以从 localhost 复制 gcloud CLI 和 Skaffold 配置:"-e", "SYNC_LOCALHOST_KUBECONFIG=true", "-e", "SYNC_LOCALHOST_GCLOUD=true",
在文件中添加所需内容后,点击
打开远程窗口。
devcontainer.json 文件示例
devcontainer.json
文件会告知“远程容器”扩展程序要在容器中公开哪些端口、如何挂载驱动器,以及要在远程容器中安装哪些扩展程序。以下 devcontainer.json
文件示例指定 Remote Container 扩展程序应安装 Cloud Code for VS Code 扩展程序:
"runArgs": [
"-v","/var/run/docker.sock:/var/run/docker.sock",
"--mount", "type=bind,source=${env:HOME}${env:USERPROFILE}/.kube,target=/root/.kube-localhost",
"--mount", "type=bind,source=${env:HOME}${env:USERPROFILE}/.config/gcloud,target=/root/.gcloud-localhost",
"-e", "SYNC_LOCALHOST_KUBECONFIG=true",
"-e", "SYNC_LOCALHOST_GCLOUD=true",
"--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"
]
后续步骤
- 请参阅 Visual Studio 文档,了解如何使用 SSH 进行远程开发。
- 通过教程了解如何使用 Dev 容器扩展程序在 Docker 容器中运行 Visual Studio Code。