| # This is the sandbox backend server. |
| # |
| # When it's run, the host maps in /var/run/docker.sock to this |
| # environment so the play-sandbox server can connect to the host's |
| # docker daemon, which has the gvisor "runsc" runtime available. |
| |
| FROM golang:1.25-trixie AS build |
| |
| COPY go.mod /go/src/playground/go.mod |
| COPY go.sum /go/src/playground/go.sum |
| WORKDIR /go/src/playground |
| RUN go mod download |
| |
| COPY . /go/src/playground |
| WORKDIR /go/src/playground/sandbox |
| RUN go install |
| |
| FROM debian:trixie |
| |
| RUN apt-get update |
| |
| # Extra stuff for occasional debugging: |
| RUN apt-get install --yes strace lsof emacs-nox net-tools tcpdump procps |
| |
| # Install Docker CLI: |
| # Add Docker's official GPG key: |
| RUN apt update |
| RUN apt install --yes ca-certificates curl |
| RUN install -m 0755 -d /etc/apt/keyrings |
| RUN curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc |
| RUN chmod a+r /etc/apt/keyrings/docker.asc |
| |
| # Add the repository to Apt sources: |
| RUN tee /etc/apt/sources.list.d/docker.sources <<EOF |
| Types: deb |
| URIs: https://download.docker.com/linux/debian |
| Suites: $(. /etc/os-release && echo "$VERSION_CODENAME") |
| Components: stable |
| Architectures: $(dpkg --print-architecture) |
| Signed-By: /etc/apt/keyrings/docker.asc |
| EOF |
| |
| RUN apt update |
| RUN apt install --yes docker-ce-cli |
| |
| COPY --from=build /go/bin/sandbox /usr/local/bin/play-sandbox |
| |
| ENTRYPOINT ["/usr/local/bin/play-sandbox"] |