Files
hapi/server/Dockerfile
T
2026-01-03 22:52:04 +08:00

50 lines
1.1 KiB
Docker

FROM oven/bun:1.3.5 AS deps
WORKDIR /home/bun/app
COPY bun.lock package.json tsconfig.base.json ./
COPY cli/package.json ./cli/package.json
COPY server/package.json ./server/package.json
COPY web/package.json ./web/package.json
COPY website/package.json ./website/package.json
COPY docs/package.json ./docs/package.json
COPY shared/package.json ./shared/package.json
RUN bun install --frozen-lockfile
FROM deps AS build
COPY shared ./shared
COPY cli ./cli
COPY server ./server
COPY web ./web
RUN bun run build:single-exe \
&& mkdir -p /out \
&& cp cli/dist-exe/bun-linux-*/hapi /out/hapi
FROM oven/bun:1.3.5-slim AS runtime
WORKDIR /home/bun/app
ENV NODE_ENV=production
ENV WEBAPP_PORT=3006
ENV HAPI_HOME=/data
USER root
RUN mkdir -p /data && chown bun:bun /data
USER bun
VOLUME /data
EXPOSE 3006
COPY --from=build /out/hapi ./hapi
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD bun -e "fetch('http://127.0.0.1:' + (process.env.WEBAPP_PORT ?? '3006') + '/').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))"
CMD ["./hapi", "server"]