Show HN: 각 함수 호출이 Docker 컨테이너를 실행하는 Lisp

발행: (2026년 2월 19일 오후 01:19 GMT+9)
3 분 소요

Source: Hacker News

Docker Lisp

Docker 이미지란 입력을 주면 출력을 생성하는 실행 가능한 코드 조각입니다.

프로그램 트레이스, docker events, 그리고 docker stats의 스크린샷

Requirements

  • Docker

Setup

  1. 기본 이미지와 내장 이미지들을 빌드합니다:

    ./scripts/build-base
    ./scripts/build-builtins
  2. 테스트를 실행합니다 (시간이 좀 걸릴 수 있습니다):

    ./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 statsdocker 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

ScriptPurpose
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/* 이미지를 제거합니다.
0 조회
Back to Blog

관련 글

더 보기 »