# syntax=docker/dockerfile:1 # PocketBase built from the official release binary. FROM alpine:3.24 # Pinned so a rebuild months from now produces the same PocketBase. Override to # upgrade (--build-arg PB_VERSION=0.40.0); set it to empty to resolve the latest # release at build time, which needs an unauthenticated GitHub API call and is # therefore subject to that GitHub rate limit (60/hour per IP). ARG PB_VERSION="0.39.11" # Provided automatically by BuildKit (amd64 / arm64). ARG TARGETARCH="amd64" RUN apk add --no-cache ca-certificates unzip wget WORKDIR /pb RUN set -eux; \ ver="${PB_VERSION}"; \ if [ -z "$ver" ]; then \ ver="$(wget -qO- https://api.github.com/repos/pocketbase/pocketbase/releases/latest \ | grep -o '"tag_name": *"v[^"]*"' | head -1 | sed -E 's/.*"v([^"]+)".*/\1/')"; \ fi; \ echo "Installing PocketBase v${ver} (${TARGETARCH})"; \ wget -q -O /tmp/pb.zip \ "https://github.com/pocketbase/pocketbase/releases/download/v${ver}/pocketbase_${ver}_linux_${TARGETARCH}.zip"; \ unzip /tmp/pb.zip -d /pb; \ rm /tmp/pb.zip COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # pb_data holds the SQLite database and uploads — mount a volume here. VOLUME /pb/pb_data EXPOSE 8070 ENTRYPOINT ["/entrypoint.sh"]