Files
explorer-monorepo/docs/BLOCKSCOUT_YAML_FIX.md

2.1 KiB

Fix YAML Quote Issues in docker-compose.yml

Problem

Docker Compose is failing with "No closing quotation" error because the command string has nested quotes that aren't properly escaped.

Solution: Use YAML List Format

Instead of:

command: sh -c "bin/blockscout eval \"Explorer.Release.migrate()\" && bin/blockscout start"

Use YAML list format:

command:
  - sh
  - -c
  - "bin/blockscout eval \"Explorer.Release.migrate()\" && bin/blockscout start"

Commands to Fix

cd /opt/blockscout

# Backup
cp docker-compose.yml docker-compose.yml.backup3

# Fix using Python
python3 << 'PYTHON'
import re

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 with blockscout start
    if 'command:' in line and ('blockscout start' in line or '/app/bin/blockscout start' in line):
        # Replace with YAML list format
        indent = len(line) - len(line.lstrip())
        new_lines.append(' ' * indent + 'command:\n')
        new_lines.append(' ' * (indent + 2) + '- sh\n')
        new_lines.append(' ' * (indent + 2) + '- -c\n')
        new_lines.append(' ' * (indent + 2) + '- "bin/blockscout eval \\"Explorer.Release.migrate()\\" && bin/blockscout start"\n')
        i += 1
        # Skip continuation lines if any
        while i < len(lines) and (lines[i].strip().startswith('-') or lines[i].strip() == ''):
            i += 1
        continue
    new_lines.append(line)
    i += 1

with open('docker-compose.yml', 'w') as f:
    f.writelines(new_lines)

print("✅ Updated docker-compose.yml")
PYTHON

# Verify
grep -A 4 "command:" docker-compose.yml

# Start
docker-compose up -d blockscout

Alternative: Manual Edit

If Python doesn't work, edit manually:

cd /opt/blockscout
nano docker-compose.yml

Find:

    command: /app/bin/blockscout start

Replace with:

    command:
      - sh
      - -c
      - "bin/blockscout eval \"Explorer.Release.migrate()\" && bin/blockscout start"

Save and exit, then:

docker-compose up -d blockscout