tidbstandalone/DOCKER_COMPOSE_V2.md

98 lines
2.4 KiB
Markdown

# Docker Compose v2 Migration Guide
This project uses **Docker Compose v2** (the newer version integrated into Docker CLI).
## What's the Difference?
| Version | Command | Status |
|---------|---------|--------|
| v1 | `docker-compose` | Legacy (standalone binary) |
| v2 | `docker compose` | Current (built into Docker) |
**Key change:** The command changed from `docker-compose` (with hyphen) to `docker compose` (with space).
## Check Your Version
```bash
# Check if you have Docker Compose v2
docker compose version
# Check if you have old v1
docker-compose --version
```
## If You Have v1 Only
### Option 1: Upgrade to Docker Compose v2 (Recommended)
**macOS with OrbStack:**
```bash
# OrbStack includes Docker Compose v2 by default
# Just make sure OrbStack is up to date
orb update
```
**macOS with Docker Desktop:**
```bash
# Update Docker Desktop to latest version
# Docker Compose v2 is included since Docker Desktop 3.4.0
```
**Manual Installation:**
```bash
# Install as Docker CLI plugin
mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-darwin-aarch64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
```
### Option 2: Create an Alias (Quick Fix)
If you can't upgrade immediately, create an alias:
```bash
# Add to your ~/.zshrc or ~/.bashrc
echo "alias docker-compose='docker compose'" >> ~/.zshrc
source ~/.zshrc
```
### Option 3: Use Docker Compose v1 Syntax (Not Recommended)
Manually replace all `docker compose` commands with `docker-compose` in:
- `start.sh`
- `README.md`
- `DATAGRIP_SETUP.md`
## Why We Use v2
1. **Built-in**: No separate installation needed
2. **Better Performance**: Faster and more efficient
3. **Active Development**: v1 is in maintenance mode only
4. **Same YAML**: Your `docker-compose.yml` works with both versions
## Verify Your Setup
```bash
./check-docker.sh
```
This will check your Docker and Docker Compose installation.
## Common Issues
### "docker: 'compose' is not a docker command"
You have Docker but not Docker Compose v2. Solutions:
- Update Docker Desktop
- Install Docker Compose v2 plugin (see above)
- Use the alias workaround
### Both v1 and v2 installed
No problem! Both can coexist. Just use `docker compose` (v2) for this project.
## References
- [Docker Compose v2 Documentation](https://docs.docker.com/compose/cli-command/)
- [Migration Guide](https://docs.docker.com/compose/migrate/)