Multiple services in docker-compose with separate devcontainer.json files - only one service gets features installed
@v-Kaniska244 is already working on this.
Since Apr 27, 2026.
Assessment
This issue has not been assessed yet.
Description
Bug Report
Description
When using a single docker-compose.yml file with multiple services, each having their own separate .devcontainer/devcontainer.json files, only one service gets its features installed. The service that is started first gets its features correctly installed, while the second service is missing its configured features.
Additionally, using devcontainer up on one service causes the other service's container to be rebuilt, even though they should be independent.
Root Cause
The devcontainer CLI generates a single temporary containerFeatures override file for the entire docker-compose project, instead of generating per-service override files. This temporary file only contains the configuration for the service that was most recently processed, causing the other service's features to be ignored.
Evidence
1. Both containers reference the same temporary file
Container labels show both containers pointing to the identical temporary override file:
com.docker.compose.project.config_files: /var/folders/.../docker-compose.devcontainer.containerFeatures-1777044430151-115a3236-0fb3-4ab5-bdb6-d1baa4463613.yml
2. Temporary file only contains one service's configuration
The temporary override file (docker-compose.devcontainer.containerFeatures-*.yml) only contains configuration for the reportify service:
services:
'reportify':
entrypoint: ["/bin/sh", "-c", "echo Container started\n..."]
labels:
- 'devcontainer.local_folder=/Users/shihaonan/.devcontainer/xiaobangtouzi/reportify'
- 'devcontainer.config_file=/Users/shihaonan/.devcontainer/xiaobangtouzi/reportify/.devcontainer/devcontainer.json'
The duplik service configuration is completely missing from this file.
3. Container metadata confirms missing features
When inspecting the containers:
- reportify container:
devcontainer.metadatalabel includes Python feature - duplik container:
devcontainer.metadatalabel is missing the Python feature
When executing commands inside containers:
- reportify container: Has Python 3.11.15 installed ✓
- duplik container: No Python installed ✗
Configuration
docker-compose.yml (shared by both services)
services:
duplik:
build:
context: ./duplik
dockerfile: Dockerfile
volumes:
- src:/workspaces
command: sleep infinity
reportify:
build:
context: ./reportify
dockerfile: Dockerfile
volumes:
- src:/workspaces
command: sleep infinity
volumes:
src:
duplik/.devcontainer/devcontainer.json
{
"name": "Duplik Development",
"dockerComposeFile": "../../docker-compose.yml",
"service": "duplik",
"workspaceFolder": "/workspaces/duplik",
"features": {
"ghcr.io/devcontainers/features/python:1": {
"version": "3.10"
}
},
"onCreateCommand": "/root/.devcontainer/init.sh",
"postStartCommand": "cd ~/.config/nvim && git pull --rebase",
"overrideCommand": false,
"runServices": [],
"remoteUser": "root"
}
reportify/.devcontainer/devcontainer.json
{
"name": "Reportify Development",
"dockerComposeFile": "../../docker-compose.yml",
"service": "reportify",
"workspaceFolder": "/workspaces/reportify",
"features": {
"ghcr.io/devcontainers/features/python:1": {
"version": "3.11"
},
"ghcr.io/devcontainers-extra/features/poetry:2": {}
},
"onCreateCommand": "/root/.devcontainer/init.sh",
"postStartCommand": "cd ~/.config/nvim && git pull --rebase",
"overrideCommand": false,
"runServices": [],
"remoteUser": "root"
}
Expected Behavior
According to VS Code Dev Containers documentation, it is officially supported to have:
- A single
docker-compose.ymlfile - Multiple services
- Each service with its own separate
.devcontainer/devcontainer.jsonfile
Expected: Each service should have its own features installed independently, and starting one service should not cause the other to rebuild.
Actual Behavior
- Only one service gets its features installed (the one that was processed first/last by the CLI)
- The other service is missing all configured features
- Using
devcontainer upon one service causes the other service's container to be rebuilt
Environment
- OS: macOS (Darwin 25.4.0)
- Docker Desktop latest
- Dominant language
- TypeScript
- Stars
- 3k
- Forks
- 461
- Avg merge
- 13h 17m
- Merged PRs (30d)
- 6
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from devcontainers/cli
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
devcontainers/cli#1203 ·
-
Difficulty 1/5 1-3 hours Newbie friendliness 68/100
devcontainers/cli#1178 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
devcontainers/cli#1301 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 74/100
devcontainers/cli#1300 ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
devcontainers/cli#1298 ·
All issues in devcontainers/cli
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
copse-dev/agent-pane#2953 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·