Migration Guide: Makefile/venv → Dev Containers
This guide helps you migrate from the traditional Makefile/venv setup to the new Dev Container development environment.
Why Migrate?
Benefits of Dev Containers
- Zero setup: One-click development environment
- Consistency: Same environment across all developers and CI/CD
- Isolation: No conflicts with host system packages
- VS Code integration: Seamless debugging, testing, and development tools
- Docker alignment: Development environment matches production container
Before (Makefile/venv)
make setup # Manual setup required
source venv/bin/activate # Manual activation
make run # Run commands
After (Dev Container)
# Just open in VS Code and reopen in container
# Everything is automatic!
python app.py # Direct commands
Migration Steps
1. Prerequisites
Install required tools:
2. Clean Up Old Environment (Optional)
If you want to start fresh:
# Clean up old virtual environment and generated files
make clean
# Or manually:
rm -rf venv/
rm -rf data/temp/* data/output/*
rm -rf __pycache__ .pytest_cache
3. Open in Dev Container
Open VS Code:
code .Reopen in Container:
- Press
F1 - Type "Dev Containers: Reopen in Container"
- Select the command
- Wait for container to build and setup to complete
- Press
First-time setup:
- Container builds automatically (5-10 minutes first time)
- VOICEVOX Core downloads automatically
- All dependencies install automatically
- Pre-commit hooks setup automatically
4. Verify Setup
Test that everything works:
# Run the application
python app.py
# Run tests
pytest tests/
# Check linting
flake8 . && mypy .
5. Update Your Workflow
Old Workflow
source venv/bin/activate # Activate environment
make run # Run application
make test # Run tests
make lint # Run linting
make format # Format code
deactivate # Deactivate environment
New Workflow
# No activation needed - just use commands directly
python app.py # Run application
pytest tests/ # Run tests
flake8 . && mypy . # Run linting
black . && isort . # Format code
# Or use VS Code tasks:
# Ctrl+Shift+P → "Tasks: Run Task" → Select task
Command Mapping
| Old (Make) | New (Direct) | VS Code Task |
|---|---|---|
make setup |
Automatic via devcontainer | N/A |
make run |
python app.py |
"Run Yomitalk App" |
make test |
pytest tests/ |
"Run All Tests" |
make test-unit |
pytest tests/unit/ |
"Run Unit Tests" |
make test-e2e |
E2E_TEST_MODE=true pytest tests/e2e/ |
"Run E2E Tests" |
make lint |
flake8 . && mypy . |
"Run Linting" |
make format |
black . && isort . |
"Format Code" |
make pre-commit-run |
pre-commit run --all-files |
"Run Pre-commit" |
make clean |
"Dev Containers: Rebuild Container" | N/A |
VS Code Integration
Tasks
Access via Ctrl+Shift+P → "Tasks: Run Task":
- Run Yomitalk App
- Run All Tests
- Run Unit Tests
- Run E2E Tests
- Format Code
- Run Linting
- Run Pre-commit
Debugging
- F5: Debug current configuration
- Ctrl+F5: Run without debugging
- Configurations available for app, unit tests, E2E tests
Extensions
Automatically installed and configured:
- Python
- Black Formatter
- isort
- Flake8
- MyPy Type Checker
- Jupyter
- Jinja
- Playwright
Troubleshooting
Container Won't Start
- Ensure Docker is running
- Check Docker Desktop has enough resources (4GB+ RAM recommended)
- Try "Dev Containers: Rebuild Container"
VOICEVOX Download Fails
# Run setup script manually in container terminal
bash .devcontainer/setup.sh
Port 7860 Not Accessible
- Check VS Code port forwarding tab
- Ensure app binds to
0.0.0.0:7860, notlocalhost:7860 - Check firewall settings
Slow Performance
- Use Docker volumes for large directories (already configured)
- Increase Docker Desktop resource allocation
- Consider using WSL2 backend on Windows
Permission Issues
# In container terminal
sudo chown -R vscode:vscode /workspace
Keeping Both Approaches
You can use both approaches simultaneously:
Dev Container (Recommended)
- Daily development
- Debugging and testing
- Code review and collaboration
Makefile (Backup)
- CI/CD environments without container support
- Quick local testing
- Legacy system compatibility
The Makefile is still maintained and functional for those who prefer it or need it for specific scenarios.
Getting Help
- Dev Container Issues: See
.devcontainer/README.md - Application Issues: See main
README.md - Architecture Questions: See
docs/design.md - Development Guidelines: See
CLAUDE.md
Benefits You'll Notice
Immediate
- No more virtual environment management
- Consistent Python environment
- Pre-configured development tools
- Integrated VS Code experience
Long-term
- Same environment across team members
- Easier onboarding for new developers
- Better CI/CD environment alignment
- Simplified Docker deployment