Skip to content

Configuration file document is out of date #66

@gongyisheng

Description

@gongyisheng

I'm trying to run sandbox fusion using docker-compose, with a configuration file.
I follow the steps in document: https://bytedance.github.io/SandboxFusion/docs/docs/reference/config

Here's my setting up:

docker-compose.yaml

version: "3.9"

services:
  sandbox-fusion:
    image: volcengine/sandbox-fusion:server-20250609
    container_name: sandbox-fusion
    ports:
      - "8080:8080"
    environment:
      - SANDBOX_CONFIG=local
    volumes:
      - ./local.yaml:/root/sandbox/sandbox/configs/local.yaml
    stdin_open: true          
    tty: true             

local.yaml

online_judge:
  database:
    backend:
      type: none  # Don't connect to online database
    cache:
      path: memory  # Location of local cache sqlite database, here it's in memory
      sources:
        - type: local  # Read jsonl files from local folder as cache
          path: sandbox/tests/datasets/samples
  max_runner_concurrency: 3
runner:
  isolation: none
  cleanup_process: false
  restore_bash: false
  max_concurrency: 34
common:
  logging_color: true

I got following error:

uvicorn sandbox.server.server:app --host '' --port 8080
Traceback (most recent call last):
  File "/root/miniconda3/bin/uvicorn", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/root/miniconda3/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/site-packages/uvicorn/main.py", line 416, in main
    run(
  File "/root/miniconda3/lib/python3.11/site-packages/uvicorn/main.py", line 587, in run
    server.run()
  File "/root/miniconda3/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "uvloop/loop.pyx", line 1517, in uvloop.loop.Loop.run_until_complete
  File "/root/miniconda3/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
    config.load()
  File "/root/miniconda3/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
    self.loaded_app = import_from_string(self.app)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
    module = importlib.import_module(module_str)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/root/sandbox/sandbox/server/server.py", line 24, in <module>
    from sandbox.database import get_databases
  File "/root/sandbox/sandbox/database.py", line 26, in <module>
    from sandbox.utils.execution import max_concurrency
  File "/root/sandbox/sandbox/utils/execution.py", line 28, in <module>
    config = RunConfig.get_instance_sync()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/sandbox/sandbox/configs/run_config.py", line 106, in get_instance_sync
    self = cls(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "/root/sandbox/sandbox/configs/run_config.py", line 98, in __init__
    super().__init__(**data)
  File "/root/miniconda3/lib/python3.11/site-packages/pydantic/main.py", line 171, in __init__
    self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 2 validation errors for RunConfig
sandbox
  Field required [type=missing, input_value={'online_judge': {'databa...{'logging_color': True}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.6/v/missing
dataset
  Field required [type=missing, input_value={'online_judge': {'databa...{'logging_color': True}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.6/v/missing
make: *** [Makefile:8: run-online] Error 1

I look up the source code and found the doc is out of date, correct schema of configuration file is:

dataset:
  database:
    backend:
      type: none  # Don't connect to online database
    cache:
      path: memory  # Location of local cache sqlite database, here it's in memory
      sources:
        - type: local
          path: sandbox/tests/datasets/samples
  max_runner_concurrency: 64
sandbox:
  isolation: none
  cleanup_process: false
  restore_bash: false
  max_concurrency: 8
common:
  logging_color: true

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions