Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
64 lines (56 loc) · 3.52 KB
/
Copy pathDockerfile
File metadata and controls
64 lines (56 loc) · 3.52 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
# syntax=docker/dockerfile:1.7
ARG S5CMD_VERSION=v2.3.0
FROM --platform=$TARGETPLATFORM peakcom/s5cmd:${S5CMD_VERSION} AS s5cmd
FROM --platform=$BUILDPLATFORM golang:1.25-bookworm AS go-deps
WORKDIR /src
COPY go.mod go.sum* ./
RUN go mod download
FROM --platform=$BUILDPLATFORM golang:1.25-bookworm AS build
WORKDIR /src
ARG TARGETOS
ARG TARGETARCH
COPY --from=go-deps /go/pkg/mod /go/pkg/mod
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build \
GOPROXY=off CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -mod=readonly -o /out/partforge ./cmd/partforge
FROM clickhouse/clickhouse-server:26.6.8.7 AS clickhouse
FROM ghcr.io/posthog/clickhouse-posthog:26.9.5.2-posthog-f0d1f075a212 AS clickhouse-posthog
FROM ubuntu:24.04 AS clickhouse-runtime
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates tzdata python3 \
&& groupadd --system clickhouse \
&& useradd --system --gid clickhouse --home-dir /nonexistent --shell /bin/false clickhouse \
&& mkdir -p /etc/clickhouse-client /etc/clickhouse-server/config.d /etc/clickhouse-server/users.d \
&& chown -R clickhouse:clickhouse /etc/clickhouse-server \
&& ln -s clickhouse /usr/bin/clickhouse-client \
&& ln -s clickhouse /usr/bin/clickhouse-server \
&& rm -rf /var/lib/apt/lists/*
COPY --from=clickhouse /usr/bin/clickhouse /usr/bin/clickhouse
COPY --from=clickhouse-posthog /usr/bin/clickhouse /usr/bin/clickhouse-26.9-posthog
COPY --from=clickhouse --chown=clickhouse:clickhouse --chmod=0400 /etc/clickhouse-server/config.xml /etc/clickhouse-server/users.xml /etc/clickhouse-server/
COPY --from=clickhouse-posthog --chown=clickhouse:clickhouse --chmod=0400 /etc/clickhouse-server/config.xml /etc/clickhouse-server/users.xml /etc/clickhouse-server-26.9-posthog/
COPY --from=clickhouse --chmod=0644 /etc/clickhouse-client/config.xml /etc/clickhouse-client/config.xml
FROM clickhouse-runtime AS clickhouse-util-udfs
ARG TARGETARCH
RUN apt-get update \
&& apt-get install -y --no-install-recommends python3-yaml \
&& rm -rf /var/lib/apt/lists/*
COPY clickhouse-util-udfs.yml /etc/partforge/clickhouse-util-udfs.yml
COPY clickhouse/install_clickhouse_util_udfs.py /usr/local/bin/install-clickhouse-util-udfs
RUN chmod 0755 /usr/local/bin/install-clickhouse-util-udfs \
&& CLICKHOUSE_CONFIG_DIR=/out/etc/clickhouse-server CLICKHOUSE_DATA_PATH=/out/var/lib/clickhouse \
install-clickhouse-util-udfs /etc/partforge/clickhouse-util-udfs.yml "$TARGETARCH"
FROM clickhouse-runtime AS worker
COPY --chown=clickhouse:clickhouse clickhouse/users.d/partforge.xml /etc/clickhouse-server/users.d/partforge.xml
COPY --from=build /out/partforge /usr/local/bin/partforge
COPY --from=s5cmd /s5cmd /usr/local/bin/s5cmd
COPY --from=clickhouse-util-udfs --chown=clickhouse:clickhouse /out/etc/clickhouse-server/config.d/clickhouse-util-udfs.xml /etc/clickhouse-server/config.d/clickhouse-util-udfs.xml
COPY --from=clickhouse-util-udfs --chown=clickhouse:clickhouse /out/etc/clickhouse-server/user_defined/ /etc/clickhouse-server/user_defined/
COPY --from=clickhouse-util-udfs --chown=clickhouse:clickhouse /out/var/lib/clickhouse/user_scripts/ /var/lib/clickhouse/user_scripts/
RUN cp -a /etc/clickhouse-server/users.d /etc/clickhouse-server/config.d /etc/clickhouse-server-26.9-posthog/
COPY --chown=clickhouse:clickhouse clickhouse/posthog.xml /etc/clickhouse-server-26.9-posthog/users.d/posthog.xml
RUN chmod 0755 /usr/local/bin/partforge /usr/local/bin/s5cmd
USER root
ENTRYPOINT ["/usr/local/bin/partforge"]
CMD ["worker"]