Show HN: 각 함수 호출이 Docker 컨테이너를 실행하는 Lisp
발행: (2026년 2월 19일 오후 01:19 GMT+9)
3 분 소요
원문: Hacker News
Source: Hacker News
Docker Lisp
Docker 이미지란 입력을 주면 출력을 생성하는 실행 가능한 코드 조각입니다.
Requirements
- Docker
Setup
-
기본 이미지와 내장 이미지들을 빌드합니다:
./scripts/build-base ./scripts/build-builtins -
테스트를 실행합니다 (시간이 좀 걸릴 수 있습니다):
./scripts/run-tests
Usage
Evaluate an expression
./scripts/run eval "(cons 1 2)"
Trace evaluation
./scripts/run --trace eval "(car (cdr (cons 1 (cons 2 (list)))))"
docker stats와 docker events를 사용해 평가 과정을 모니터링할 수도 있습니다.
Write and run a program
프로그램을 명령으로 제공하는 docker-lisp/eval을 기반으로 하는 Dockerfile을 작성합니다. 예시:
FROM docker-lisp/eval
CMD ["(define fact (lambda (n) (if (number-equals n 0) 1 (multiply n (fact (subtract n 1))))))", "(fact 3)"]
프로그램을 빌드합니다:
./scripts/build [name]
name을 생략하면 파일 이름이 사용됩니다.
빌드된 프로그램을 실행합니다:
./scripts/run
Scripts
| Script | Purpose |
|---|---|
build [name] | Dockerfile을 docker-lisp/에 빌드합니다. 기본값은 파일의 베이스명입니다. |
build-base | 기본 이미지(docker-lisp/base-racket, docker-lisp/base-call)를 빌드합니다. |
build-builtins | 모든 내장 이미지를 빌드합니다. |
run [--trace] [--no-cleanup] [args] | docker-lisp/ 컨테이너를 실행합니다. |
run-tests [--no-trace] [--rebuild-base] [prefix filter] | 테스트 스위트를 실행합니다(기본적으로 트레이스가 활성화됨). |
clean | 모든 docker-lisp/* 컨테이너를 종료하고, 빌드된 docker-lisp/* 이미지를 제거합니다. |
