- Error out if .env is missing, instruct user to copy from .env.example
- Source .env to load MYSQL_* variables for docker compose
- Command-line port argument overrides PORT in .env
- Generate .env with random MySQL password on first deploy
- Update PORT in .env instead of modifying docker-compose.yml directly
- Wait for MySQL container healthcheck before checking app status
- Skip .env generation if file already exists