They are not set in the Dockerfile. The Dockerfile defines how to build the docker itself, but a docker volume is outside the container and is supposed to be mounted when running the container.
In inference.py you should set
INPUT_PATH = Path("/input")
OUTPUT_PATH = Path("/output")
https://github.com/YzzLiu/PENGWIN-example-algorithm/blob/main/PENGWIN-challenge-packages/preliminary-development-phase-ct/inference.py
And in test_run.sh, you should keep
INPUT_DIR="${SCRIPT_DIR}/test/input"
OUTPUT_DIR="${SCRIPT_DIR}/test/output"
and
--volume "$INPUT_DIR":/input \
--volume "$OUTPUT_DIR":/output \
to mount the volume, in order to run the container locally. And you should put your own test data in that folder.
After your container is submitted, the GC platform will mount new docker volumes to /input and /output, and your inference.py should be able to access through /input and /output normally. Neither you and I are supposed to know the exact local paths as they vary from case to case.