version: '3.7' services: # Generates and funds the accounts required when setting up the L2 chain (outputs to volume l2_accounts) # Creates / updates the configuration for L1 contracts deployment # Deploys the L1 smart contracts (outputs to volume l1_deployment) fixturenet-optimism-contracts: restart: on-failure hostname: fixturenet-optimism-contracts image: cerc/optimism-contracts:local env_file: - ../config/fixturenet-optimism/l1-params.env environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_L1_CHAIN_ID: ${CERC_L1_CHAIN_ID} CERC_L1_RPC: ${CERC_L1_RPC} CERC_L1_ACCOUNTS_CSV_URL: ${CERC_L1_ACCOUNTS_CSV_URL} CERC_L1_ADDRESS: ${CERC_L1_ADDRESS} CERC_L1_PRIV_KEY: ${CERC_L1_PRIV_KEY} CERC_L1_ADDRESS_2: ${CERC_L1_ADDRESS_2} CERC_L1_PRIV_KEY_2: ${CERC_L1_PRIV_KEY_2} # Waits for L1 endpoint to be up before running the script command: | "./wait-for-it.sh -h ${CERC_L1_HOST:-$${DEFAULT_CERC_L1_HOST}} -p ${CERC_L1_PORT:-$${DEFAULT_CERC_L1_PORT}} -s -t 60 -- ./run.sh" volumes: - ../config/wait-for-it.sh:/app/packages/contracts-bedrock/wait-for-it.sh - ../container-build/cerc-optimism-contracts/hardhat-tasks/verify-contract-deployment.ts:/app/packages/contracts-bedrock/tasks/verify-contract-deployment.ts - ../container-build/cerc-optimism-contracts/hardhat-tasks/rekey-json.ts:/app/packages/contracts-bedrock/tasks/rekey-json.ts - ../container-build/cerc-optimism-contracts/hardhat-tasks/send-balance.ts:/app/packages/contracts-bedrock/tasks/send-balance.ts - ../config/fixturenet-optimism/optimism-contracts/update-config.js:/app/packages/contracts-bedrock/update-config.js - ../config/fixturenet-optimism/optimism-contracts/run.sh:/app/packages/contracts-bedrock/run.sh - l2_accounts:/l2-accounts - l1_deployment:/app/packages/contracts-bedrock extra_hosts: - "host.docker.internal:host-gateway" # Generates the config files required for L2 (outputs to volume l2_config) op-node-l2-config-gen: restart: on-failure image: cerc/optimism-op-node:local depends_on: fixturenet-optimism-contracts: condition: service_completed_successfully env_file: - ../config/fixturenet-optimism/l1-params.env environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_L1_RPC: ${CERC_L1_RPC} volumes: - ../config/fixturenet-optimism/generate-l2-config.sh:/app/generate-l2-config.sh - l1_deployment:/contracts-bedrock:ro - l2_config:/app command: ["sh", "/app/generate-l2-config.sh"] extra_hosts: - "host.docker.internal:host-gateway" # Initializes and runs the L2 execution client (outputs to volume l2_geth_data) op-geth: restart: always image: cerc/optimism-l2geth:local depends_on: op-node-l2-config-gen: condition: service_started volumes: - ../config/fixturenet-optimism/run-op-geth.sh:/run-op-geth.sh - l2_config:/op-node:ro - l2_accounts:/l2-accounts:ro - l2_geth_data:/datadir entrypoint: "sh" command: "/run-op-geth.sh" ports: - "0.0.0.0:8545:8545" healthcheck: test: ["CMD", "nc", "-vz", "localhost:8545"] interval: 30s timeout: 10s retries: 10 start_period: 10s # Runs the L2 consensus client (Sequencer node) op-node: restart: always image: cerc/optimism-op-node:local depends_on: op-geth: condition: service_healthy env_file: - ../config/fixturenet-optimism/l1-params.env environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_L1_RPC: ${CERC_L1_RPC} volumes: - ../config/fixturenet-optimism/run-op-node.sh:/app/run-op-node.sh - l2_config:/op-node-data:ro - l2_accounts:/l2-accounts:ro command: ["sh", "/app/run-op-node.sh"] ports: - "0.0.0.0:8547:8547" healthcheck: test: ["CMD", "nc", "-vz", "localhost:8547"] interval: 30s timeout: 10s retries: 10 start_period: 10s extra_hosts: - "host.docker.internal:host-gateway" # Runs the batcher (takes transactions from the Sequencer and publishes them to L1) op-batcher: restart: always image: cerc/optimism-op-batcher:local depends_on: op-node: condition: service_healthy op-geth: condition: service_healthy env_file: - ../config/fixturenet-optimism/l1-params.env environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_L1_RPC: ${CERC_L1_RPC} volumes: - ../config/wait-for-it.sh:/wait-for-it.sh - ../config/fixturenet-optimism/run-op-batcher.sh:/run-op-batcher.sh - l2_accounts:/l2-accounts:ro entrypoint: ["sh", "-c"] # Waits for L1 endpoint to be up before running the batcher command: | "/wait-for-it.sh -h ${CERC_L1_HOST:-$${DEFAULT_CERC_L1_HOST}} -p ${CERC_L1_PORT:-$${DEFAULT_CERC_L1_PORT}} -s -t 60 -- /run-op-batcher.sh" ports: - "127.0.0.1:8548:8548" extra_hosts: - "host.docker.internal:host-gateway" # Runs the proposer (periodically submits new state roots to L1) op-proposer: restart: always image: cerc/optimism-op-proposer:local depends_on: op-node: condition: service_healthy env_file: - ../config/fixturenet-optimism/l1-params.env environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_L1_RPC: ${CERC_L1_RPC} volumes: - ../config/wait-for-it.sh:/wait-for-it.sh - ../config/fixturenet-optimism/run-op-proposer.sh:/run-op-proposer.sh - l1_deployment:/contracts-bedrock:ro - l2_accounts:/l2-accounts:ro entrypoint: ["sh", "-c"] # Waits for L1 endpoint to be up before running the proposer command: | "/wait-for-it.sh -h ${CERC_L1_HOST:-$${DEFAULT_CERC_L1_HOST}} -p ${CERC_L1_PORT:-$${DEFAULT_CERC_L1_PORT}} -s -t 60 -- /run-op-proposer.sh" ports: - "127.0.0.1:8560:8560" extra_hosts: - "host.docker.internal:host-gateway" volumes: l1_deployment: l2_accounts: l2_config: l2_geth_data: