@@ -129,17 +129,10 @@ WORKDIR /app
129129# Install Caddy + Node.js (for Astro SSR) + ca-certificates
130130RUN apk add --no-cache caddy nodejs ca-certificates tzdata curl
131131
132- # Artalk (self-hosted comment system) — optional sidecar, enabled at runtime
133- # via VANBLOG_ARTALK_ENABLED=1. Downloaded at build time so the image is
134- # reproducible. Override the version with --build-arg ARTALK_VERSION=vX.Y.Z.
135- # NOTE: if Artalk changes its release asset naming, update the URL below.
136- ARG ARTALK_VERSION=v2.10.0
137- RUN mkdir -p /tmp/artalk && \
138- curl -fsSL "https://github.com/ArtalkJS/Artalk/releases/download/${ARTALK_VERSION}/artalk_${ARTALK_VERSION}_linux_amd64.tar.gz" -o /tmp/artalk/artalk.tar.gz && \
139- tar -xzf /tmp/artalk/artalk.tar.gz -C /tmp/artalk && \
140- find /tmp/artalk -type f -name 'artalk' -exec mv {} /usr/local/bin/artalk \; && \
141- chmod +x /usr/local/bin/artalk && \
142- rm -rf /tmp/artalk
132+ # Artalk is provided by the separate prod-artalk target.
133+ # image intentionally has no Artalk binary; prod-artalk adds it below.
134+
135+
143136
144137# Copy Go binary and the separately-built core schema artifact.
145138COPY --from=go-build /pocketbase /usr/local/bin/vanblog
@@ -195,7 +188,18 @@ VOLUME ["/pb_data", "/data/caddy", "/data/artalk"]
195188
196189ENTRYPOINT ["/entrypoint.sh" ]
197190
198- # --- Stage 6: DEV image (extends prod + full Node toolchain + source) ---
191+ # --- Stage 6: PROD image with bundled Artalk capability ---
192+ FROM prod AS prod-artalk
193+ ARG ARTALK_VERSION=v2.10.0
194+ RUN apk add --no-cache curl && \
195+ mkdir -p /tmp/artalk && \
196+ curl -fsSL "https://github.com/ArtalkJS/Artalk/releases/download/${ARTALK_VERSION}/artalk_${ARTALK_VERSION}_linux_amd64.tar.gz" -o /tmp/artalk/artalk.tar.gz && \
197+ tar -xzf /tmp/artalk/artalk.tar.gz -C /tmp/artalk && \
198+ find /tmp/artalk -type f -name 'artalk' -exec mv {} /usr/local/bin/artalk \; && \
199+ chmod +x /usr/local/bin/artalk && \
200+ rm -rf /tmp/artalk
201+
202+ # --- Stage 7: DEV image (plain prod capability) ---
199203FROM prod AS dev
200204
201205RUN apk add --no-cache npm git && npm install -g pnpm@latest-10
@@ -242,3 +246,25 @@ ENV VANBLOG_MODE=dev
242246EXPOSE 80 443 4321 8080
243247
244248ENTRYPOINT ["/entrypoint.sh" ]
249+
250+ # Development image with bundled Artalk capability.
251+ FROM prod-artalk AS dev-artalk
252+ RUN apk add --no-cache npm git && npm install -g pnpm@latest-10
253+ COPY package.json pnpm-workspace.yaml pnpm-lock.yaml .npmrc /workspace/
254+ COPY sdk/ /workspace/sdk/
255+ COPY app/ /workspace/app/
256+ COPY packs/ /workspace/packs/
257+ COPY themes/ /workspace/themes/
258+ COPY scripts/ /workspace/scripts/
259+ COPY models.config.mjs /workspace/models.config.mjs
260+ COPY docs/ /workspace/docs/
261+ COPY AGENTS.md /workspace/AGENTS.md
262+ COPY .pi/ /workspace/.pi/
263+ COPY .agents/ /workspace/.agents/
264+ WORKDIR /workspace
265+ RUN pnpm install --frozen-lockfile
266+ COPY docker/entrypoint.dev.sh /entrypoint.sh
267+ RUN chmod +x /entrypoint.sh
268+ ENV VANBLOG_MODE=dev
269+ EXPOSE 80 443 4321 8080
270+ ENTRYPOINT ["/entrypoint.sh" ]
0 commit comments