假设我在这里肯定做错了什么,但是我似乎不能用我非常简单的devcontainer.json文件让VSCode将任何东西挂载到容器中。
它目前看起来如下所示:
{
"name": "Terraform",
"dockerFile": "Dockerfile",
"mounts": ["source=/home/paul,target=/host,type=bind,consistency=cached"]
}我还尝试了文档中给出的示例:
["source=${localEnv:HOME}${localEnv:USERPROFILE},target=/host-home-folder,type=bind,consistency=cached"]两者似乎都没有在容器内挂载任何东西,并且查看"Dev Containers“控制台输出的输出,甚至看起来都不像VSCode试图挂载它。我需要打开一些东西才能让它工作吗?
在Linux Mint上运行VSCode 1.36.1。Docker CE 19.03。
发布于 2020-04-04 19:36:08
对我来说,它使用的是workspaceMount而不是挂载
"workspaceMount": "source=${localWorkspaceFolder}/sub-folder,target=/workspace,type=bind,consistency=delegated",
"workspaceFolder": "/workspace"如https://code.visualstudio.com/docs/remote/containers-advanced中所述
发布于 2020-04-09 06:35:32
看起来你需要挂载1.41+才能让VSCode属性工作。
https://code.visualstudio.com/docs/remote/containers-advanced#_adding-another-local-file-mount
发布于 2020-12-16 20:44:26
Docker-in-Docker
使用docker-compose
在使用利用docker-compose功能的Docker-in-Docker设置时,可以使用VSCode内部变量${localWorkspaceFolder}来获取磁盘上工作区的实际路径。这是必需的,因为在Docker- in -Docker环境中,“正常”路径可能无法工作,因为第一个Docker实例已经在挂载的环境中运行。
为了使这些内部VSCode变量也可以在docker-compose.yaml中访问,首先需要在.devcontainer/devcontainer.json中定义一个environment variable
{
"name": "DevContainer",
"dockerFile": "Dockerfile", // this is a reference to the .devcontainer/Dockerfile, which is used by VSCode to build the DevContainer. This has nothing to do with the Dockerfile or docker-compose.yaml file your project is using.
"remoteEnv": {
// the original host directory which is needed for volume
// mount commands from inside the container (Docker in Docker)
"HOST_PROJECT_PATH": "${localWorkspaceFolder}"
}
}然后,在项目的实际./docker-compose.yaml中使用环境变量
services:
webserver:
image: nginx:mainline-alpine
container_name: webserver
ports:
- 8080:80
volumes:
- ${HOST_PROJECT_PATH}/webserver:/etc/nginx/conf.d
- ${HOST_PROJECT_PATH}/build:/var/www/htmlVSCode甚至提供了更多的内部变量,可用于DevContainer环境的高级设置和配置。请看一下here。
使用Dockerfile
关于如何使用Docker-in-Docker和Docker文件的更多信息可以在here找到。
https://stackoverflow.com/questions/60778464
复制相似问题