log / fixing devcontainer name conflicts across ides
Problem / Context
When working with devcontainers across different IDEs (VS Code, Cursor, Neovim), each IDE uses a different default naming convention for containers. This creates a frustrating problem: switching between IDEs spins up duplicate containers instead of reusing the existing one.
The naming behavior:
- VS Code / Cursor: Creates containers named
<project-folder-name>_devcontainer - Neovim (using
esensar/nvim-dev-container): Creates containers nameddevcontainer
The result:
- Opening the same project in VS Code creates one container
- Opening it in Neovim creates a different container
- You end up with multiple containers for the same project
- Wastes resources and causes state sync issues
Solution / Approach
Override the default container naming by explicitly setting the name field in your docker-compose.yml. This forces all IDEs to use the same container name.
Key insight: The name field in docker-compose takes precedence over IDE-specific naming conventions.
Code / Examples
Add this to your docker-compose.yml:
services:
devcontainer:
# Explicitly name your container
name: my-project-dev
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/workspace
# ... rest of your config
Before (inconsistent names):
# VS Code creates:
docker ps
# CONTAINER NAME: my-project_devcontainer
# Neovim creates:
docker ps
# CONTAINER NAME: devcontainer
After (consistent name):
# All IDEs use the same container:
docker ps
# CONTAINER NAME: my-project-dev
Alternative: Use container_name (older approach)
services:
devcontainer:
container_name: my-project-dev # Also works
# ...
Recommendation: Use name instead of container_name in newer Docker Compose versions (v2+).