forked from nuvix-dev/nuvix
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
67 lines (55 loc) · 2.03 KB
/
Copy pathDockerfile
File metadata and controls
67 lines (55 loc) · 2.03 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# -------------------------------
# STAGE 1: BASE DEPS
# -------------------------------
FROM oven/bun:1.3.7 AS deps
WORKDIR /app
ENV BUN_INSTALL_CACHE_DIR=/bun/cache
COPY package.json bun.lock ./
COPY apps/server/package.json apps/server/package.json
COPY apps/platform/package.json apps/platform/package.json
COPY libs/core/package.json libs/core/package.json
COPY libs/pg-meta/package.json libs/pg-meta/package.json
COPY libs/utils/package.json libs/utils/package.json
RUN --mount=type=cache,id=bun-cache-1.3.7,target=/bun/cache \
bun install --frozen-lockfile
# -------------------------------
# STAGE 2: BUILD
# -------------------------------
FROM deps AS build
ARG APP_NAME
WORKDIR /app
COPY . .
RUN bun turbo build --filter=@nuvix/${APP_NAME} --force
# -------------------------------
# STAGE 3: PROD DEPS
# -------------------------------
FROM oven/bun:1.3.7 AS prod-deps
ARG APP_NAME
WORKDIR /prod/${APP_NAME}
COPY --from=build /app/dist/${APP_NAME}/package.json ./
RUN --mount=type=cache,id=bun-cache-1.3.7,target=/bun/cache \
bun install --production
# -------------------------------
# STAGE 4: RUNTIME
# -------------------------------
FROM oven/bun:1.3.7-slim AS runtime
ARG APP_NAME
ARG VERSION=dev
ARG VCS_REF=unknown
ARG BUILD_DATE=unknown
ENV APP_NAME=${APP_NAME}
ENV NODE_ENV=production
LABEL org.opencontainers.image.title="Nuvix ${APP_NAME}" \
org.opencontainers.image.description="Nuvix backend platform component" \
org.opencontainers.image.version=$VERSION \
org.opencontainers.image.revision=$VCS_REF \
org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.source="https://github.com/nuvix/nuvix" \
org.opencontainers.image.licenses="FSL-1.1-Apache-2.0" \
org.opencontainers.image.authors="Nuvix <support@nuvix.in>" \
org.opencontainers.image.url="https://nuvix.in" \
org.opencontainers.image.vendor="Nuvix"
WORKDIR /app
COPY --from=build /app/dist/${APP_NAME} ./
COPY --from=prod-deps /prod/${APP_NAME}/node_modules ./node_modules
CMD ["bun", "run", "start"]