Repository navigation
Expand file tree
/
Copy pathDockerfile.quickstart
More file actions
75 lines (65 loc) · 2.41 KB
/
Copy pathDockerfile.quickstart
File metadata and controls
75 lines (65 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# syntax=docker/dockerfile:1.7
#
# Self-contained Gemba quickstart image.
#
# This is intentionally separate from the minimal ko/distroless server
# image in .ko.yaml. The quickstart image includes the bd CLI and a small
# entrypoint that seeds examples/my-project into /data so a first-time
# user can run one Docker command and immediately see a populated Gemba.
ARG NODE_VERSION=22-bookworm
ARG GO_VERSION=1.25-bookworm
ARG PYTHON_VERSION=3.12-slim-bookworm
ARG BEADS_VERSION=1.0.3
FROM node:${NODE_VERSION} AS web-builder
WORKDIR /src
COPY . .
RUN corepack enable \
&& pnpm install --frozen-lockfile \
&& pnpm --filter gemba-web build \
&& touch web/dist/.keep
FROM golang:${GO_VERSION} AS go-builder
WORKDIR /src
COPY . .
COPY --from=web-builder /src/web/dist ./web/dist
ARG VERSION=dev
ARG COMMIT=none
ARG DATE=unknown
RUN CGO_ENABLED=0 go build -trimpath \
-ldflags="-s -w -X main.version=${VERSION} -X main.commit=${COMMIT} -X main.date=${DATE}" \
-o /out/gemba ./cmd/gemba
FROM python:${PYTHON_VERSION} AS runtime
ARG TARGETARCH
ARG BEADS_VERSION
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates tini git bash curl \
&& rm -rf /var/lib/apt/lists/*
RUN case "${TARGETARCH}" in \
amd64|arm64) bd_arch="${TARGETARCH}" ;; \
*) echo "unsupported TARGETARCH for bd: ${TARGETARCH}" >&2; exit 1 ;; \
esac \
&& curl -fsSL \
"https://github.com/gastownhall/beads/releases/download/v${BEADS_VERSION}/beads_${BEADS_VERSION}_linux_${bd_arch}.tar.gz" \
-o /tmp/bd.tar.gz \
&& tar -xzf /tmp/bd.tar.gz -C /usr/local/bin bd \
&& chmod 0755 /usr/local/bin/bd \
&& rm /tmp/bd.tar.gz \
&& bd version
RUN useradd --create-home --home-dir /home/gemba --uid 10001 --shell /usr/sbin/nologin gemba \
&& mkdir -p /data /usr/share/gemba/examples/my-project \
&& chown -R gemba:gemba /data /home/gemba
COPY --from=go-builder /out/gemba /usr/local/bin/gemba
COPY examples/my-project/seed.json /usr/share/gemba/examples/my-project/seed.json
COPY deploy/docker/quickstart-entrypoint.sh /usr/local/bin/gemba-quickstart
RUN chmod 0755 /usr/local/bin/gemba /usr/local/bin/gemba-quickstart
USER gemba
WORKDIR /data
ENV HOME=/home/gemba \
GEMBA_HOME=/data/gemba-home \
GEMBA_DATA_DIR=/data \
GEMBA_LISTEN=0.0.0.0:7666 \
GEMBA_AUTH=token \
GEMBA_DEMO_PREFIX=mp
VOLUME ["/data"]
EXPOSE 7666
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/gemba-quickstart"]
CMD ["serve"]