Files
mev-beta/orig/DEVELOPMENT_SETUP_SUMMARY.md
Administrator c54c569f30 refactor: move all remaining files to orig/ directory
Completed clean root directory structure:
- Root now contains only: .git, .env, docs/, orig/
- Moved all remaining files and directories to orig/:
  - Config files (.claude, .dockerignore, .drone.yml, etc.)
  - All .env variants (except active .env)
  - Git config (.gitconfig, .github, .gitignore, etc.)
  - Tool configs (.golangci.yml, .revive.toml, etc.)
  - Documentation (*.md files, @prompts)
  - Build files (Dockerfiles, Makefile, go.mod, go.sum)
  - Docker compose files
  - All source directories (scripts, tests, tools, etc.)
  - Runtime directories (logs, monitoring, reports)
  - Dependency files (node_modules, lib, cache)
  - Special files (--delete)

- Removed empty runtime directories (bin/, data/)

V2 structure is now clean:
- docs/planning/ - V2 planning documents
- orig/ - Complete V1 codebase preserved
- .env - Active environment config (not in git)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 10:53:05 +01:00

268 lines
6.5 KiB
Markdown

# Development Environment Setup Summary
## What Was Configured
### 1. Development Docker Configuration
**Dockerfile.dev** - Enhanced development dockerfile
- Supports git branch selection via `GIT_BRANCH` build arg
- Includes podman and development tools
- Configured for rootless podman operation
- Copies source code for development access
**docker-compose.dev.yml** - Development compose file
- Branch selection via `GIT_BRANCH` environment variable
- Podman-in-podman support (privileged mode)
- Mounts:
- Logs directory (persistent)
- Data directory (database)
- Source code (read-only)
- Podman socket and storage
- Higher resource limits (4 CPU, 4GB RAM)
- Debug logging by default
### 2. Production Docker Configuration
**docker-compose.yml** - Updated for branch support
- Added `GIT_BRANCH` build argument
- Defaults to `master` branch for production
- Image tagged with branch name
### 3. Development Management Script
**scripts/dev-env.sh** - Comprehensive development tool
```bash
# Key commands:
./scripts/dev-env.sh start [branch] # Start with branch
./scripts/dev-env.sh stop # Stop environment
./scripts/dev-env.sh switch [branch] # Switch branches
./scripts/dev-env.sh rebuild [branch] # Rebuild from scratch
./scripts/dev-env.sh logs [-f] # View logs
./scripts/dev-env.sh shell # Access container
./scripts/dev-env.sh status # Check status
./scripts/dev-env.sh branches # List branches
./scripts/dev-env.sh clean # Clean everything
```
### 4. Documentation
**DEV_ENVIRONMENT.md** - Complete development guide
- Quick start instructions
- Branch switching workflow
- Debugging guidelines
- Comparison with production setup
- Troubleshooting tips
## Key Features
### Branch Selection
Develop on any git branch:
```bash
# Work on feature branch
./scripts/dev-env.sh start feat-new-feature
# Switch to fix branch
./scripts/dev-env.sh switch fix-critical-arbitrage-bugs
# Test on master
./scripts/dev-env.sh start master
```
### Podman-in-Podman
Run podman commands inside the development container:
```bash
# Access container
./scripts/dev-env.sh shell
# Use podman inside
podman ps
podman images
podman run alpine echo "hello from nested podman"
```
### Live Development
- Source code mounted at `/app/source`
- Logs persisted to `./logs`
- Database persisted to `./data`
- Configuration mounted from `./config/config.dev.yaml`
## Usage Examples
### Feature Development Workflow
```bash
# 1. Create and checkout feature branch
git checkout -b feat-my-feature master-dev
# 2. Start development environment
./scripts/dev-env.sh start feat-my-feature
# 3. Make code changes
vim pkg/arbitrage/service.go
# 4. Rebuild to test
./scripts/dev-env.sh rebuild feat-my-feature
# 5. View logs
./scripts/dev-env.sh logs -f
# 6. Debug if needed
./scripts/dev-env.sh shell
# 7. Stop when done
./scripts/dev-env.sh stop
# 8. Commit changes
git add .
git commit -m "feat: implement new feature"
```
### Testing Multiple Branches
```bash
# Test master-dev
./scripts/dev-env.sh switch master-dev
# ... verify functionality ...
# Test fix branch
./scripts/dev-env.sh switch fix-critical-arbitrage-bugs
# ... verify fix works ...
# Test feature branch
./scripts/dev-env.sh switch feat-podman-compose-support
# ... verify feature works ...
```
### Debugging Production Issues
```bash
# Reproduce on production branch
./scripts/dev-env.sh start master
# Check logs for errors
./scripts/dev-env.sh logs -f | grep ERROR
# Access container for inspection
./scripts/dev-env.sh shell
# Inside container:
cat /app/config/config.yaml
ls -la /app/logs
ps aux
```
## Environment Variables
Configure via `.env` file or export:
```bash
# Branch to use
export GIT_BRANCH=master-dev
# Logging
export LOG_LEVEL=debug
# Metrics
export METRICS_ENABLED=true
export METRICS_PORT=9090
# RPC
export ARBITRUM_RPC_ENDPOINT=https://arb1.arbitrum.io/rpc
export ARBITRUM_WS_ENDPOINT=
# Bot config
export MEV_BOT_ENCRYPTION_KEY=your_key_here
```
## Container Naming
Development containers are named based on branch:
- **master-dev** → `mev-bot-dev-master-dev`
- **fix-critical-arbitrage-bugs** → `mev-bot-dev-fix-critical-arbitrage-bugs`
- **feat-new-feature** → `mev-bot-dev-feat-new-feature`
This allows multiple branch containers (though not recommended to run simultaneously).
## Differences from Production
| Aspect | Development | Production |
|--------|------------|------------|
| Dockerfile | Dockerfile.dev | Dockerfile |
| Compose File | docker-compose.dev.yml | docker-compose.yml |
| Container Name | mev-bot-dev-{branch} | mev-bot-production |
| Default Branch | master-dev | master |
| Privileged Mode | Yes | No |
| Podman-in-Podman | Yes | No |
| Source Mounted | Yes | No |
| CPU Limit | 4 cores | 2 cores |
| Memory Limit | 4GB | 2GB |
| Restart Policy | unless-stopped | always |
| Auto-start on Boot | No | Yes (systemd) |
| Log Level | debug | info |
## Next Steps
1. **Test the setup**:
```bash
./scripts/dev-env.sh start master-dev
./scripts/dev-env.sh status
./scripts/dev-env.sh logs -f
```
2. **Create feature branch**:
```bash
git checkout -b feat-my-new-feature master-dev
./scripts/dev-env.sh start feat-my-new-feature
```
3. **Develop and test**:
- Make code changes
- Rebuild with `./scripts/dev-env.sh rebuild`
- Test functionality
- Debug with `./scripts/dev-env.sh shell`
4. **Merge when ready**:
```bash
./scripts/dev-env.sh stop
git checkout master-dev
git merge feat-my-new-feature
git push origin master-dev
```
## Troubleshooting
See [DEV_ENVIRONMENT.md](DEV_ENVIRONMENT.md#troubleshooting) for detailed troubleshooting steps.
Common issues:
- Build failures → Check Dockerfile.dev syntax
- Container won't start → Check logs with `./scripts/dev-env.sh logs`
- Podman socket errors → Ensure podman service is running
- Out of disk space → Run `./scripts/dev-env.sh clean`
## Files Created
```
/docker/mev-beta/
├── Dockerfile.dev # Development dockerfile
├── docker-compose.dev.yml # Development compose
├── docker-compose.yml # Updated for branch support
├── DEV_ENVIRONMENT.md # Development guide
├── DEVELOPMENT_SETUP_SUMMARY.md # This file
└── scripts/
└── dev-env.sh # Development management script
```
## Status
✅ Development environment configured and ready
✅ Branch selection working
✅ Podman-in-podman support added
✅ Management scripts created
✅ Documentation complete
⏳ Testing in progress
Current build status: Building mev-bot:dev-master-dev...