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 named devcontainer

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+).

References

Written on 2025-11-09 15:45:00 +0700 Edited on 2025-11-09 15:45:00 +0700