A portable Docker-based development environment with Neovim, Tmux, Conda, and GitHub Copilot CLI.
β οΈ WARNING: This is a prototype!
Use at your own risk. This project is in early development and may contain bugs or unexpected behavior.
Always backup your data before use.
- Docker & Docker Compose
- Git
- Active GitHub Copilot subscription (Individual, Business, or Enterprise)
mkdir -p devdocker/projects
cd devdockerCopy the provided files:
docker-compose.ymlDockerfileentrypoint.shsetup-configs.sh
docker compose builddocker compose up -dNote: On first startup, a non-root user will be automatically created using your host username and UID/GID. This ensures proper file permissions between the container and host system. The user will have passwordless sudo access. This setup only runs once - subsequent starts will use the created user automatically.
docker attach devdockerYou will be automatically logged in as the non-root user created in step 4.
To detach without stopping the container: Press Ctrl+P followed by Ctrl+Q
setup-configs.shThe script will ask for your dotfiles repository URL.
Expected dotfiles structure:
dotfiles/
βββ nvim/ # Neovim config (or lvim/)
βββ .tmux.conf # Tmux config
βββ .bashrc # Bash config (or .bashr)
Launch Copilot CLI and authenticate with your GitHub account:
copilotWhen prompted, use the /login command and follow the on-screen instructions to authenticate with your GitHub credentials.
Neovim (Packer):
nvim
:PackerSyncTmux (TPM):
tmux
# Press: <prefix> + Icd devdocker
docker compose up -d
docker attach devdockerOr create an alias:
# Add to your host .bashrc or .zshrc
alias dev='cd ~/devdocker && docker compose up -d && docker attach devdocker'Then simply run:
devPress: Ctrl+P then Ctrl+Q
docker compose stopdocker compose downdocker compose down -vBy default, DevDocker preserves your terminal cursor as a beam bar (|). You can change this by modifying the DEVDOCKER_CURSOR environment variable in docker-compose.yml:
1or2- Block cursor (β)3or4- Underline cursor (_)5or6- Beam bar cursor (|) [default]
Example:
environment:
- DEVDOCKER_CURSOR=2 # Block cursor- Ubuntu: 22.04 LTS
- Neovim: 0.11.3 (latest stable)
- Tmux: Latest from Ubuntu repos
- Miniconda: Latest version
- Python: Latest from conda-forge
- Node.js: 20.x LTS
- GitHub Copilot CLI: Latest version
GitHub Copilot CLI is an AI coding agent that works directly in your terminal, similar to tools like Claude Code, Codex, and Gemini CLI. It helps you work with codebases, debug issues, write scripts, and automate development tasks without leaving the command line.
After authentication, simply run:
copilot- Navigate codebases: Ask about project structure and understand new repositories
- Environment setup: Verify dependencies and install missing tools
- Find issues: Search and rank GitHub issues by difficulty
- Code implementation: Draft code changes and review diffs before applying
- Git workflow: Stage files, write commits, and open pull requests
- System tasks: Kill processes, manage ports, and execute shell commands
- File operations: Read, write, and modify files with AI assistance
Copilot CLI always asks for permission before:
- Running commands on your system
- Accessing directories
- Making file changes
You can:
- Allow once or always for specific commands
- View current permissions with
/session - Reset permissions with
/reset - Manage allowed directories with
/add-directory
Type / in Copilot CLI to see all available commands, including:
/login- Authenticate with GitHub/help- Show available commands/session- View current session permissions/reset- Reset all permissions/mcp- Extend with MCP servers
Press Ctrl+R to see logs of commands Copilot has executed.
docker compose psdocker compose logs -fconda create -n myproject python=3.11
conda activate myproject# Conda environments
docker run --rm -v devdocker_conda_envs:/data -v $(pwd):/backup ubuntu tar czf /backup/conda_envs_backup.tar.gz -C /data .
# Neovim configs
docker run --rm -v devdocker_nvim_data:/data -v $(pwd):/backup ubuntu tar czf /backup/nvim_backup.tar.gz -C /data .# Conda environments
docker run --rm -v devdocker_conda_envs:/data -v $(pwd):/backup ubuntu tar xzf /backup/conda_envs_backup.tar.gz -C /data
# Neovim configs
docker run --rm -v devdocker_nvim_data:/data -v $(pwd):/backup ubuntu tar xzf /backup/nvim_backup.tar.gz -C /data