189 lines
4.6 KiB
Markdown
189 lines
4.6 KiB
Markdown
# Start Blockscout Container and Build Assets
|
|
|
|
## Problem
|
|
|
|
The Blockscout container is not running, so we can't build assets or access it.
|
|
|
|
## Solution
|
|
|
|
### Quick Fix Commands (From VMID 5000)
|
|
|
|
```bash
|
|
# Step 1: Find and start the container
|
|
BLOCKSCOUT_CONTAINER=$(docker ps -a | grep blockscout | grep -v postgres | awk '{print $1}' | head -1)
|
|
docker start $BLOCKSCOUT_CONTAINER
|
|
|
|
# Step 2: Wait for container to initialize (30-60 seconds)
|
|
echo "Waiting for Blockscout to start..."
|
|
sleep 30
|
|
|
|
# Step 3: Build static assets
|
|
docker exec -it $BLOCKSCOUT_CONTAINER mix phx.digest
|
|
|
|
# Step 4: Verify assets were built
|
|
docker exec -it $BLOCKSCOUT_CONTAINER test -f priv/static/cache_manifest.json && \
|
|
echo "✅ Assets built" || echo "❌ Assets still missing"
|
|
```
|
|
|
|
### Alternative: Use Docker Compose
|
|
|
|
If Blockscout is managed via docker-compose:
|
|
|
|
```bash
|
|
cd /opt/blockscout
|
|
|
|
# Start Blockscout
|
|
docker compose up -d blockscout
|
|
|
|
# Wait for startup
|
|
sleep 30
|
|
|
|
# Build assets
|
|
BLOCKSCOUT_CONTAINER=$(docker ps | grep blockscout | grep -v postgres | awk '{print $1}' | head -1)
|
|
docker exec -it $BLOCKSCOUT_CONTAINER mix phx.digest
|
|
```
|
|
|
|
### Automated Script
|
|
|
|
Run the automated script:
|
|
|
|
```bash
|
|
# From Proxmox host
|
|
cd /home/intlc/projects/proxmox/explorer-monorepo
|
|
./scripts/start-blockscout-and-build-assets.sh
|
|
```
|
|
|
|
Or from inside VMID 5000:
|
|
|
|
```bash
|
|
cd /home/intlc/projects/proxmox/explorer-monorepo
|
|
./scripts/start-blockscout-and-build-assets.sh
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Container Won't Start
|
|
|
|
**Check why it's not starting:**
|
|
```bash
|
|
docker logs $BLOCKSCOUT_CONTAINER 2>&1 | tail -50
|
|
```
|
|
|
|
**Common issues:**
|
|
1. **Database connection failed** - Check if postgres container is running:
|
|
```bash
|
|
docker ps | grep postgres
|
|
```
|
|
|
|
2. **Port conflict** - Check if port 4000 is in use:
|
|
```bash
|
|
netstat -tlnp | grep 4000
|
|
```
|
|
|
|
3. **Missing environment variables** - Check docker-compose.yml or .env file
|
|
|
|
### Assets Build Fails
|
|
|
|
**If `mix phx.digest` fails:**
|
|
|
|
1. **Try alternative method:**
|
|
```bash
|
|
docker exec -it $BLOCKSCOUT_CONTAINER npm run deploy
|
|
```
|
|
|
|
2. **Check if dependencies are installed:**
|
|
```bash
|
|
docker exec -it $BLOCKSCOUT_CONTAINER mix deps.get
|
|
docker exec -it $BLOCKSCOUT_CONTAINER npm install --prefix apps/block_scout_web/assets
|
|
```
|
|
|
|
3. **Build manually inside container:**
|
|
```bash
|
|
docker exec -it $BLOCKSCOUT_CONTAINER bash
|
|
# Inside container:
|
|
cd apps/block_scout_web/assets
|
|
npm install
|
|
npm run deploy
|
|
mix phx.digest
|
|
```
|
|
|
|
### Container Starts Then Stops
|
|
|
|
**Check logs for errors:**
|
|
```bash
|
|
docker logs $BLOCKSCOUT_CONTAINER 2>&1 | grep -i error | tail -20
|
|
```
|
|
|
|
**Common causes:**
|
|
- Database migrations not run (but we verified they are)
|
|
- Missing environment variables
|
|
- Port conflicts
|
|
- Memory/resource limits
|
|
|
|
**Fix:**
|
|
```bash
|
|
# Check docker-compose resource limits
|
|
grep -A 10 "blockscout:" /opt/blockscout/docker-compose.yml | grep -E "(memory|cpus)"
|
|
|
|
# Increase if needed or check system resources
|
|
free -h
|
|
```
|
|
|
|
## Verification
|
|
|
|
After starting and building assets:
|
|
|
|
```bash
|
|
# 1. Check container is running
|
|
docker ps | grep blockscout
|
|
|
|
# 2. Check assets exist
|
|
BLOCKSCOUT_CONTAINER=$(docker ps | grep blockscout | grep -v postgres | awk '{print $1}' | head -1)
|
|
docker exec -it $BLOCKSCOUT_CONTAINER ls -la priv/static/cache_manifest.json
|
|
|
|
# 3. Check Blockscout is responding
|
|
curl -s http://localhost:4000/api/v2/stats | head -20
|
|
|
|
# 4. Check logs for errors
|
|
docker logs $BLOCKSCOUT_CONTAINER 2>&1 | tail -30
|
|
```
|
|
|
|
## Complete Fix Sequence
|
|
|
|
```bash
|
|
# From VMID 5000 - Complete fix sequence
|
|
|
|
# 1. Start container
|
|
BLOCKSCOUT_CONTAINER=$(docker ps -a | grep blockscout | grep -v postgres | awk '{print $1}' | head -1)
|
|
docker start $BLOCKSCOUT_CONTAINER
|
|
|
|
# 2. Wait for startup
|
|
echo "Waiting 30 seconds for Blockscout to initialize..."
|
|
sleep 30
|
|
|
|
# 3. Build assets
|
|
docker exec -it $BLOCKSCOUT_CONTAINER mix phx.digest
|
|
|
|
# 4. Verify assets
|
|
docker exec -it $BLOCKSCOUT_CONTAINER test -f priv/static/cache_manifest.json && \
|
|
echo "✅ Assets built successfully" || echo "❌ Assets still missing"
|
|
|
|
# 5. Check if Blockscout is responding
|
|
curl -s http://localhost:4000/api/v2/stats && \
|
|
echo "✅ Blockscout API working" || echo "⚠️ API not responding yet"
|
|
|
|
# 6. Check logs
|
|
docker logs $BLOCKSCOUT_CONTAINER 2>&1 | tail -20
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
After starting the container and building assets:
|
|
|
|
1. ✅ Verify container is running: `docker ps | grep blockscout`
|
|
2. ✅ Verify assets exist: `docker exec -it blockscout test -f priv/static/cache_manifest.json`
|
|
3. ✅ Verify API responds: `curl http://localhost:4000/api/v2/stats`
|
|
4. ✅ Check docker-compose startup command is correct
|
|
5. ✅ Ensure container stays running (check logs for crashes)
|
|
|