forked from JoaoHenriqueBarbosa/FinOpenPOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
77 lines (61 loc) · 2.43 KB
/
Copy pathDockerfile
File metadata and controls
77 lines (61 loc) · 2.43 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
68
69
70
71
72
73
74
75
76
77
FROM alpine:3.21 AS base
RUN apk add --no-cache nodejs npm nginx && npm i -g bun
FROM base AS deps
WORKDIR /app
COPY package.json bun.lock ./
COPY apps/web/package.json ./apps/web/
COPY apps/docs/package.json ./apps/docs/
COPY packages/api/package.json ./packages/api/
COPY packages/auth/package.json ./packages/auth/
COPY packages/config/package.json ./packages/config/
COPY packages/db/package.json ./packages/db/
COPY packages/env/package.json ./packages/env/
COPY packages/fiscal/package.json ./packages/fiscal/
COPY packages/ui/package.json ./packages/ui/
RUN bun install --frozen-lockfile --ignore-scripts
FROM base AS build
WORKDIR /app
COPY --from=deps /app .
COPY . .
# Run postinstall scripts (fumadocs-mdx needs source files)
RUN cd apps/docs && bunx fumadocs-mdx
ENV BETTER_AUTH_SECRET=build-placeholder
# Single base URL — everything derives from it
ARG NEXT_PUBLIC_BASE_URL=http://localhost
ENV NEXT_PUBLIC_BASE_URL=$NEXT_PUBLIC_BASE_URL
ENV BASE_URL=$NEXT_PUBLIC_BASE_URL
# Build web with basePath=/app
ENV BASE_PATH=/app
RUN mkdir -p apps/web/data && cd apps/web && bun run --bun next build
ENV BASE_PATH=
# Build docs (serves landing page + documentation, no basePath)
RUN cd apps/docs && bun run --bun next build
FROM base AS runtime
WORKDIR /app
ENV NODE_ENV=production
# Copy node_modules
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules
COPY --from=deps /app/apps/docs/node_modules ./apps/docs/node_modules
# Copy built web app
COPY --from=build /app/apps/web/.next ./apps/web/.next
COPY --from=build /app/apps/web/public ./apps/web/public
COPY --from=build /app/apps/web/package.json ./apps/web/
COPY --from=build /app/apps/web/next.config.mjs ./apps/web/
COPY --from=build /app/apps/web/drizzle.config.ts ./apps/web/
COPY --from=build /app/apps/web/scripts ./apps/web/scripts
COPY --from=build /app/apps/web/src ./apps/web/src
# Copy built docs app
COPY --from=build /app/apps/docs/.next ./apps/docs/.next
COPY --from=build /app/apps/docs/package.json ./apps/docs/
COPY --from=build /app/apps/docs/next.config.mjs ./apps/docs/
# Copy packages source (needed by drizzle-kit at runtime)
COPY --from=build /app/packages ./packages
COPY --from=build /app/package.json ./
# Nginx config
COPY nginx.conf /etc/nginx/http.d/default.conf
# Entrypoint script
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
EXPOSE 3111
CMD ["/docker-entrypoint.sh"]