# Slim runtime image — uses pre-built binaries from the release. # The full Dockerfile (multi-stage Rust build) is for local development. # CI uses this to avoid 60+ min QEMU cross-compilation. ARG BINARY_DIR=binaries FROM ubuntu:24.04 # CA bundle copied from a reliable multi-arch image instead of apt-installing # from ports.ubuntu.com — Canonical's arm64 ports mirror is unreachable from # CI runners and breaks the multi-arch release build. No build-time network. COPY --from=gcr.io/distroless/static-debian12 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt ARG BINARY_DIR COPY ${BINARY_DIR}/webclaw /usr/local/bin/webclaw COPY ${BINARY_DIR}/webclaw-mcp /usr/local/bin/webclaw-mcp COPY ${BINARY_DIR}/webclaw-server /usr/local/bin/webclaw-server # Default REST API port when running `webclaw-server` inside the container. EXPOSE 3000 # Container default: bind all interfaces so `-p 3000:3000` works. The # binary itself defaults to 127.0.0.1; flipping here keeps the CLI safe on # a laptop but makes the container reachable out of the box. ENV WEBCLAW_HOST=0.0.0.0 # Entrypoint shim: forwards webclaw args/URL to the binary, but exec's other # commands directly so this image can be used as a FROM base with custom CMD. COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"] CMD ["webclaw", "--help"]