Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
32 lines
893 B
Docker
32 lines
893 B
Docker
# portfolio-next: polls the content repo, builds the static site with Astro, serves it.
|
|
FROM oven/bun:1.3.14-slim
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends git openssh-client ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
COPY --chown=bun:bun package.json bun.lock ./
|
|
RUN bun install --frozen-lockfile --production && chown -R bun:bun /app
|
|
COPY --chown=bun:bun astro.config.mjs tsconfig.json ./
|
|
COPY --chown=bun:bun public ./public
|
|
COPY --chown=bun:bun src ./src
|
|
|
|
RUN printf '#!/bin/sh\nexec bun /app/src/cli.ts "$@"\n' > /usr/local/bin/site \
|
|
&& chmod +x /usr/local/bin/site \
|
|
&& mkdir /data && chown bun:bun /data
|
|
|
|
ARG APP_VERSION=dev
|
|
ENV APP_VERSION=$APP_VERSION \
|
|
DATA_DIR=/data \
|
|
PORT=8080 \
|
|
POLL_INTERVAL=1h \
|
|
SOURCES_INTERVAL=6h \
|
|
CONTENT_BRANCH=main
|
|
|
|
USER bun
|
|
VOLUME /data
|
|
EXPOSE 8080
|
|
ENTRYPOINT ["site"]
|
|
CMD ["serve"]
|