File size: 1,523 Bytes
d4ea988 d937b37 d4ea988 d937b37 d4ea988 d937b37 2c978fd d937b37 d4ea988 2c978fd d937b37 d4ea988 d937b37 d4ea988 d937b37 d4ea988 d937b37 d4ea988 d937b37 bd9aa97 d937b37 d4ea988 d937b37 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | FROM oven/bun:1-slim AS build
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
ARG LUMIVERSE_REPO=https://github.com/CloudCompile/Lumiverse.git
ARG LUMIVERSE_REF=main
RUN git clone --depth 1 --branch "${LUMIVERSE_REF}" "${LUMIVERSE_REPO}" .
# Prevent bun from trying to migrate npm lockfiles during install
RUN rm -f package-lock.json npm-shrinkwrap.json yarn.lock pnpm-lock.yaml
# Backend deps (allow bun.lock* generation/updates inside the container build)
RUN bun install --production 2>/dev/null || bun install --production
# Frontend build
WORKDIR /src/frontend
RUN rm -f package-lock.json npm-shrinkwrap.json yarn.lock pnpm-lock.yaml
RUN bun install 2>/dev/null || bun install
RUN bun run build
FROM oven/bun:1-slim
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates \
&& update-ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /src/node_modules ./node_modules
COPY --from=build /src/package.json ./package.json
COPY --from=build /src/src ./src
COPY --from=build /src/frontend/dist ./frontend/dist
RUN mkdir -p /data && chown -R bun:bun /data
ENV NODE_ENV=production
ENV PORT=7860
ENV DATA_DIR=/data
ENV FRONTEND_DIR=/app/frontend/dist
ENV TRUST_ANY_ORIGIN=true
ENV OWNER_PASSWORD=changeme123
ENV OWNER_USERNAME=admin
EXPOSE 7860
VOLUME /data
USER bun
CMD ["bun", "run", "src/index.ts"] |