Development Container Setup
This project includes a development container configuration that provides a fully configured development environment using Docker containers.
Prerequisites
Getting Started
Open in Dev Container:
- Open the project in VS Code
- When prompted, click "Reopen in Container" or use Command Palette:
Dev Containers: Reopen in Container
- The first time will take longer as it builds the container
Alternative Methods:
- Use Command Palette:
Dev Containers: Open Folder Locally in Container
- Or click the green "Open Remote Window" button in the bottom-left and select "Reopen in Container"
What's Included
Development Tools
- Node.js 20 with pnpm package manager
- TypeScript and ESLint for code quality
- Prettier for code formatting
- Jest and Playwright for testing
- Git for version control
- GitHub CLI for repository management
Project Dependencies
- HandBrake CLI for video processing
- FFmpeg for media handling
- SQLite3 for database operations
- Docker-in-Docker for container operations
VS Code Extensions
- TypeScript and JavaScript support
- Tailwind CSS IntelliSense
- ESLint and Prettier integration
- Playwright testing tools
- GitHub Copilot (if available)
- Test Explorer integration
Development Workflow
Once the container is running:
# Install dependencies (already done in postCreateCommand)
pnpm install
# Start development servers
pnpm run dev
# Run tests
pnpm run test
# Lint code
pnpm run lint
# Format code
pnpm run format
Port Forwarding
The following ports are automatically forwarded:
- 3000: Next.js web application
- 3001: NestJS API service
- 9229: Node.js debugger
File Mounting
- Workspace: Full project directory is mounted for live editing
- Data Directory: SQLite database files persist between sessions
- pnpm Store: Package cache is persisted for faster installs
Customization
Adding Extensions
Edit .devcontainer/devcontainer.json and add extensions to the customizations.vscode.extensions array.
Modifying Environment
Add environment variables in the containerEnv section of devcontainer.json.
Installing Additional Tools
Add packages to the Dockerfile or use the features system in devcontainer.json.
Troubleshooting
Container Won't Start
- Ensure Docker is running
- Check available disk space
- Try rebuilding:
Dev Containers: Rebuild Container
Port Conflicts
- Modify port forwarding in
devcontainer.json
- Check if ports are already in use on host
Performance Issues
- Ensure adequate RAM allocation for Docker
- Consider using Docker Desktop settings to increase resources
Permission Issues
- Files are owned by the
node user in the container
- Use
sudo if needed for system-level operations
Advanced Configuration
Custom Dockerfile
The included Dockerfile extends the official Node.js dev container image. Modify it to add custom tools or configurations.
Multiple Configurations
Create multiple dev container configurations by adding more files in the .devcontainer directory.
Remote Development
This setup works with GitHub Codespaces and other remote development environments.
Contributing
When making changes to the dev container setup:
- Test the configuration thoroughly
- Update this README if adding new features
- Consider the impact on different development environments
Support
For issues with the dev container setup:
- Check the VS Code Dev Containers documentation
- Review Docker and container logs
- Ensure all prerequisites are met