forked from JoaoHenriqueBarbosa/FinOpenPOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.production
More file actions
69 lines (55 loc) · 2.39 KB
/
Copy pathDockerfile.production
File metadata and controls
69 lines (55 loc) · 2.39 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
FROM alpine:3.21 AS base
RUN apk add --no-cache nodejs npm postgresql postgresql-client && npm i -g bun
FROM base AS deps
WORKDIR /app
COPY package.json bun.lock ./
COPY apps/web/package.json ./apps/web/
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
FROM base AS build
WORKDIR /app
COPY --from=deps /app .
COPY . .
# Run prepare-prod to switch from PGLite to node-postgres
RUN cd apps/web && bun scripts/prepare-prod.ts
# Reinstall after dependency changes (pg added, pglite removed)
RUN bun install
ENV BETTER_AUTH_SECRET=build-placeholder
ENV BETTER_AUTH_URL=http://localhost:3000
ENV DATABASE_URL=postgresql://finopenpos:finopenpos@localhost:5432/finopenpos
RUN cd apps/web && bun run --bun next build
FROM base AS runtime
WORKDIR /app
ENV NODE_ENV=production
# Setup PostgreSQL data directory
RUN mkdir -p /run/postgresql /var/lib/postgresql/data \
&& chown -R postgres:postgres /run/postgresql /var/lib/postgresql/data
# Init PostgreSQL cluster
RUN su postgres -c "initdb -D /var/lib/postgresql/data"
# Configure pg_hba for local trust auth
RUN echo "local all all trust" > /var/lib/postgresql/data/pg_hba.conf \
&& echo "host all all 127.0.0.1/32 trust" >> /var/lib/postgresql/data/pg_hba.conf \
&& echo "host all all ::1/128 trust" >> /var/lib/postgresql/data/pg_hba.conf
# Copy full node_modules tree (root + workspace, after prepare-prod)
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/apps/web/node_modules ./apps/web/node_modules
# Copy built 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 --from=build /app/package.json ./
COPY docker-entrypoint-prod.sh /docker-entrypoint-prod.sh
RUN chmod +x /docker-entrypoint-prod.sh
WORKDIR /app/apps/web
EXPOSE 3111
CMD ["/docker-entrypoint-prod.sh"]