VSCode+WSL环境下Dev Containers启动失败求助
Dev Containers启动失败:容器内product.json为空引发JSON解析错误
在搭配WSL的VSCode中使用Dev Containers开发项目,自昨日起容器无法正常启动。日志显示读取容器内/home/vscode/.vscode-server/bin/b58957e67ee1e712cebf466b995adf4c5307b2bd/product.json文件时触发JSON解析错误,具体日志如下:
[2024-05-04T04:45:06.972Z] Start: Run in container: cat '/home/vscode/.vscode-server/bin/b58957e67ee1e712cebf466b995adf4c5307b2bd/product.json' [2024-05-04T04:45:06.975Z] Stop (3 ms): Run in container: cat '/home/vscode/.vscode-server/bin/b58957e67ee1e712cebf466b995adf4c5307b2bd/product.json' [2024-05-04T04:45:06.981Z] SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at Kz (c:\Users\juanp\.vscode\extensions\ms-vscode-remote.remote-containers-0.362.0\dist\extension\extension.js:225:1273) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Oue (c:\Users\juanp\.vscode\extensions\ms-vscode-remote.remote-containers-0.362.0\dist\extension\extension.js:221:4028) at async Nl (c:\Users\juanp\.vscode\extensions\ms-vscode-remote.remote-containers-0.362.0\dist\extension\extension.js:201:4302) at async bpe (c:\Users\juanp\.vscode\extensions\ms-vscode-remote.remote-containers-0.362.0\dist\extension\extension.js:275:6649) at async MN (c:\Users\juanp\.vscode\extensions\ms-vscode-remote.remote-containers-0.362.0\dist\extension\extension.js:278:5396)
经排查,容器内的product.json文件为空是错误诱因。
更新1:删除容器并重新启动项目时,第一个启动的Dev Container可正常运行,但第二个启动的会失败——先启动前端容器则后端容器失败,先启动后端容器则前端容器失败。
项目配置
docker-compose.yml
version: '3' services: backend: container_name: backend image: mcr.microsoft.com/devcontainers/python:1-3.9-bullseye volumes: - .:/workspace:cached # Other configuration options for the Python container command: sleep infinity links: - frontend environment: - TZ=Etc/GMT-5 networks: - mnet frontend: container_name: frontend image: mcr.microsoft.com/devcontainers/typescript-node:0-14 volumes: - .:/workspace:cached # Other configuration options for the TypeScript container command: sleep infinity environment: - TZ=Etc/GMT-5 networks: - mnet postgres-db: container_name: postgres-db image: postgres:16 volumes: - db-data:/var/lib/postgresql/data environment: - POSTGRES_USER=dbuser - POSTGRES_PASSWORD=dbpwd - POSTGRES_DB=mydb networks: - mnet ports: - 5432:5432 rabbitmq: container_name: rabbitmq image: rabbitmq:3.9 volumes: - rabbitmq-data:/var/lib/rabbitmq environment: - RABBITMQ_DEFAULT_USER=radmin - RABBITMQ_DEFAULT_PASS=rpassword ports: - 5672:5672 - 15672:15672 networks: - mnet volumes: db-data: rabbitmq-data: networks: mnet: driver: bridge
.devcontainer目录配置
项目包含.devcontainer目录,内部有backcontainer和frontcontainer两个子目录,各自的devcontainer.json配置如下:
backcontainer/devcontainer.json
{ "name": "Backend", "dockerComposeFile": ["../../docker-compose.yml"], "service": "backend", "shutdownAction": "none", "workspaceFolder": "/workspace/backend" }
frontcontainer/devcontainer.json
{ "name": "Frontend", "dockerComposeFile": ["../../docker-compose.yml"], "service": "frontend", "shutdownAction": "none", "workspaceFolder": "/workspace/frontend" }
已尝试的解决方案
- 重建、删除后端和前端容器
- 参考过官方仓库的相关解决方案,但问题仍未解决
其他使用Dev Containers的项目可正常运行,目前不知如何修改。
内容的提问来源于stack exchange,提问作者Juan Botero
相关产品推荐
相关产品推荐

