diff options
| author | Mohamed Bassem <me@mbassem.com> | 2026-01-18 20:08:13 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2026-01-18 20:08:13 +0000 |
| commit | b0036ef193831531fe8daf8588720a4520ed9ccc (patch) | |
| tree | 61b9ce81333c73e7726fc2a6b732b459d66e048a /docker | |
| parent | 4858d3faaf9cf91bac93c20c9723d2cc868c99b4 (diff) | |
| download | karakeep-b0036ef193831531fe8daf8588720a4520ed9ccc.tar.zst | |
docker: move from alpine to debian
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/Dockerfile | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index a4919dc2..e7802bf4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,15 @@ +################# Monolith Builder ############## +FROM rust:1-bookworm AS monolith_builder + +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + libssl-dev \ + pkg-config \ + && rm -rf /var/lib/apt/lists/* \ + && cargo install monolith + ################# Base Builder ############## -FROM node:24-alpine AS base +FROM node:24-slim AS base WORKDIR /app ENV PNPM_HOME="/pnpm" @@ -8,8 +18,13 @@ ENV PATH="$PNPM_HOME:$PATH" # https://github.com/karakeep-app/karakeep/issues/967 RUN npm install -g corepack@0.31.0 && corepack enable -# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. -RUN apk add --no-cache libc6-compat make g++ py3-pip linux-headers +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + make \ + g++ \ + python3 \ + python3-pip \ + && rm -rf /var/lib/apt/lists/* # Copy package files for dependency installation COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./ @@ -60,7 +75,7 @@ RUN (cd apps/mcp && pnpm build) ################# The All-in-one builder ############## -FROM node:24-alpine AS aio_builder +FROM node:24-slim AS aio_builder LABEL org.opencontainers.image.source="https://github.com/karakeep-app/karakeep" WORKDIR /app @@ -77,6 +92,14 @@ EXPOSE 3000 ARG S6_OVERLAY_VERSION=3.2.1.0 ARG TARGETARCH +# Install wget and xz-utils needed for s6-overlay +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + ca-certificates \ + wget \ + xz-utils \ + && rm -rf /var/lib/apt/lists/* + ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz \ && case ${TARGETARCH} in \ @@ -94,7 +117,24 @@ COPY --chmod=755 ./docker/root/etc/s6-overlay /etc/s6-overlay ###################### # Install runtime deps ###################### -RUN apk add --no-cache monolith yt-dlp graphicsmagick ghostscript +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + curl \ + graphicsmagick \ + ghostscript \ + && rm -rf /var/lib/apt/lists/* + +ARG TARGETARCH +RUN case ${TARGETARCH} in \ + "amd64") YTDLP_ARCH=x86_64 ;; \ + "arm64") YTDLP_ARCH=aarch64 ;; \ + *) echo "Unsupported arch: ${TARGETARCH}" && exit 1 ;; \ + esac \ + && curl -fsSL https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_${YTDLP_ARCH} -o /usr/local/bin/yt-dlp \ + && chmod +x /usr/local/bin/yt-dlp + +# Copy monolith binary from builder +COPY --from=monolith_builder /usr/local/cargo/bin/monolith /usr/local/bin/monolith ###################### # Prepare the web app @@ -154,7 +194,7 @@ ENV USING_LEGACY_SEPARATE_CONTAINERS=true ################# The cli ############## -FROM node:24-alpine AS cli +FROM node:24-slim AS cli LABEL org.opencontainers.image.source="https://github.com/karakeep-app/karakeep" WORKDIR /app @@ -169,7 +209,7 @@ ENTRYPOINT ["node", "index.mjs"] ################# MCP server ############## -FROM node:24-alpine AS mcp +FROM node:24-slim AS mcp LABEL org.opencontainers.image.source="https://github.com/karakeep-app/karakeep" WORKDIR /app |
