Files
portfolio-next/Dockerfile
T

33 lines
934 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 \
SITE_URL=https://lucaswinther.info
USER bun
VOLUME /data
EXPOSE 8080
ENTRYPOINT ["site"]
CMD ["serve"]