Files
explorer-monorepo/docs/BLOCKSCOUT_START_AND_BUILD.md

4.6 KiB

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)

# 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:

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:

# From Proxmox host
cd /home/intlc/projects/proxmox/explorer-monorepo
./scripts/start-blockscout-and-build-assets.sh

Or from inside VMID 5000:

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:

docker logs $BLOCKSCOUT_CONTAINER 2>&1 | tail -50

Common issues:

  1. Database connection failed - Check if postgres container is running:

    docker ps | grep postgres
    
  2. Port conflict - Check if port 4000 is in use:

    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:

    docker exec -it $BLOCKSCOUT_CONTAINER npm run deploy
    
  2. Check if dependencies are installed:

    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:

    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:

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:

# 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:

# 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

# 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)