如何在已有docker-compose.yml的项目中使用VS Code Dev Container
实现方案
你可以通过组合原有docker-compose.yml和devcontainer专属的扩展配置文件实现需求,完全不需要修改原有docker-compose.yml,兼容手动启动的使用场景。
步骤1:新增devcontainer专属docker-compose扩展配置
在.devcontainer目录下新建docker-compose.devcontainer.yml文件,内容如下:
version: '3.8' services: node-dev: build: context: . dockerfile: Dockerfile args: VARIANT: "12" volumes: - ..:/workspace:cached command: sleep infinity
步骤2:修改devcontainer.json配置
替换原有devcontainer.json的内容为:
{ "name": "Node.js + MariaDB", "dockerComposeFile": [ "../docker-compose.yml", "./docker-compose.devcontainer.yml" ], "service": "node-dev", "workspaceFolder": "/workspace", "runArgs": ["--init"], "settings": {}, "extensions": [ "dbaeumer.vscode-eslint" ], "forwardPorts": [3306], "remoteUser": "node" }
功能说明
- 原有根目录的
docker-compose.yml完全没有改动,不使用Dev Containers扩展的用户依然可以直接执行docker-compose up启动MariaDB服务,符合复用要求 - 启动Dev Container时,两个docker-compose配置会自动合并,同时启动MariaDB和Node开发容器
- 开发容器内访问数据库时,主机名填
mariadb,端口填3306即可连接 - 宿主机访问数据库直接用
localhost:3306即可,原有端口映射配置保留生效
你之前看到的dockerComposeFile失效的说法并不准确,这个字段目前依然是有效配置,旧回答失效大概率是路径配置错误,或者使用了已经废弃的嵌套结构,只要按上面的示例配置顶层dockerComposeFile数组即可正常使用。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

