FROM oven/bun:1 AS base WORKDIR /app RUN apt-get --update install -y --no-install-recommends \ tini openssh-client git-core zstd \ && rm -rf /var/lib/apt/lists/* # Copy public first so postinstall can write vendor files into it COPY public ./public # Install dependencies (postinstall vendors simplewebauthn + jxl-polyfill into public/) COPY package.json bun.lock* ./ RUN bun install --frozen-lockfile --production # Copy source COPY src ./src COPY tsconfig.json ./ EXPOSE 3000 ENV DATA_DIR=/data VOLUME ["/data"] ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["sh", "-c", "bun run db:init && bun run start"]