Files
2026-05-04 10:55:26 +03:00

58 lines
1.9 KiB
Docker

ARG N8N_VERSION=2.18.6
ARG JQ_VERSION=1.7.1
# ------------------------------------------------
# 1) busybox-static (sh, sed, mkdir, chown, su, etc.)
# ------------------------------------------------
FROM alpine:3.23 AS busybox-builder
RUN apk add --no-cache busybox-static
# ------------------------------------------------
# 2) jq static (download correct binary for TARGETARCH)
# ------------------------------------------------
FROM alpine:3.23 AS jq-builder
ARG JQ_VERSION
ARG TARGETARCH
RUN apk add --no-cache wget ca-certificates
RUN case "${TARGETARCH}" in \
amd64) JQ_ASSET="jq-linux-amd64" ;; \
arm64) JQ_ASSET="jq-linux-arm64" ;; \
*) echo "Unsupported TARGETARCH=${TARGETARCH}" && exit 1 ;; \
esac \
&& wget -O /usr/local/bin/jq \
"https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/${JQ_ASSET}" \
&& chmod +x /usr/local/bin/jq
# ------------------------------------------------
# 3) claude-code
# ------------------------------------------------
FROM node:20-alpine AS node-builder
RUN npm install -g @anthropic-ai/claude-code
# ------------------------------------------------
# 4) Final image (n8n distroless)
# ------------------------------------------------
FROM docker.n8n.io/n8nio/n8n:${N8N_VERSION}
USER root
# busybox (static) + install applets (/bin/sh, /bin/sed, /bin/su, /bin/chown, etc.)
COPY --from=busybox-builder /bin/busybox /bin/busybox
RUN ["/bin/busybox", "--install", "/bin"]
# jq (static, correct arch)
COPY --from=jq-builder /usr/local/bin/jq /usr/bin/jq
# claude-code
COPY --from=node-builder /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=node-builder /usr/local/bin/claude /usr/local/bin/claude
ENV PATH="/usr/local/bin:/usr/bin:/bin:${PATH}"
WORKDIR /data
COPY docker-entrypoint.sh /tmp/docker-entrypoint.sh
RUN chmod +x /tmp/docker-entrypoint.sh
ENTRYPOINT ["/bin/sh", "/tmp/docker-entrypoint.sh"]
EXPOSE 443