83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
# Skip Migrations - Just Start Blockscout
|
|
|
|
## Problem
|
|
The `Explorer.Release.migrate()` function is not available in the eval context, causing the container to restart repeatedly.
|
|
|
|
## Solution
|
|
Since the database tables already exist (verified earlier), we can skip migrations and just start Blockscout directly.
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
cd /opt/blockscout
|
|
|
|
# Update docker-compose.yml to just start (no migrations)
|
|
python3 << 'PYTHON'
|
|
with open('docker-compose.yml', 'r') as f:
|
|
lines = f.readlines()
|
|
|
|
new_lines = []
|
|
i = 0
|
|
while i < len(lines):
|
|
line = lines[i]
|
|
# Check if this is a command line
|
|
if 'command:' in line:
|
|
indent = len(line) - len(line.lstrip())
|
|
# Replace with simple start command
|
|
new_lines.append(' ' * indent + 'command: bin/blockscout start\n')
|
|
i += 1
|
|
# Skip the list items (- sh, -c, etc.)
|
|
while i < len(lines) and lines[i].strip().startswith('-'):
|
|
i += 1
|
|
continue
|
|
new_lines.append(line)
|
|
i += 1
|
|
|
|
with open('docker-compose.yml', 'w') as f:
|
|
f.writelines(new_lines)
|
|
|
|
print("✅ Updated to just start (no migrations)")
|
|
PYTHON
|
|
|
|
# Verify
|
|
grep -A 1 "command:" docker-compose.yml
|
|
|
|
# Restart
|
|
docker-compose down blockscout
|
|
docker-compose up -d blockscout
|
|
|
|
# Check status
|
|
sleep 30
|
|
docker ps | grep blockscout
|
|
docker logs blockscout 2>&1 | tail -30
|
|
```
|
|
|
|
## Why This Works
|
|
|
|
1. **Tables already exist**: We verified that `migrations_status`, `blocks`, and `transactions` tables exist
|
|
2. **Migrations were run**: The tables wouldn't exist if migrations hadn't been run previously
|
|
3. **Release module unavailable**: The `Explorer.Release` module is only available in certain contexts, not in regular eval
|
|
|
|
## Alternative: If Migrations Are Needed Later
|
|
|
|
If you need to run migrations in the future, you can:
|
|
|
|
1. Use a one-off container:
|
|
```bash
|
|
docker run --rm \
|
|
--network host \
|
|
-e DATABASE_URL=postgresql://blockscout:blockscout@localhost:5432/blockscout \
|
|
blockscout/blockscout:latest \
|
|
bin/blockscout eval "Application.ensure_all_started(:explorer); Explorer.Release.migrate()"
|
|
```
|
|
|
|
2. Or connect to the running container and run migrations manually:
|
|
```bash
|
|
docker exec -it blockscout bin/blockscout remote
|
|
# Then in the remote console:
|
|
Explorer.Release.migrate()
|
|
```
|
|
|
|
But for now, since tables exist, just starting Blockscout should work.
|
|
|