60 lines
1.4 KiB
Docker
60 lines
1.4 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
|
|
FROM node:20-bookworm-slim AS base
|
|
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
ENV HUSKY=0
|
|
|
|
|
|
FROM base AS deps
|
|
|
|
ENV NODE_ENV=development
|
|
ENV HUSKY=0
|
|
|
|
COPY package.json package-lock.json ./
|
|
|
|
RUN npm pkg delete scripts.prepare \
|
|
&& npm ci \
|
|
--include=dev \
|
|
--legacy-peer-deps \
|
|
--no-audit \
|
|
--no-fund
|
|
|
|
|
|
FROM base AS migrator
|
|
|
|
ENV NODE_ENV=production
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
ENV HUSKY=0
|
|
|
|
COPY --from=deps /app/node_modules ./node_modules
|
|
|
|
COPY package.json package-lock.json ./
|
|
COPY drizzle.config.* ./
|
|
COPY drizzle ./drizzle
|
|
COPY src ./src
|
|
COPY scripts ./scripts
|
|
COPY tsconfig.json ./
|
|
|
|
CMD ["sh", "-c", "\
|
|
set -eu; \
|
|
echo '========================================'; \
|
|
echo '1/3 Running database migrations'; \
|
|
echo '========================================'; \
|
|
npm run migrate; \
|
|
echo '========================================'; \
|
|
echo '2/3 Seeding master data'; \
|
|
echo '========================================'; \
|
|
npm run seed:master-data; \
|
|
echo '========================================'; \
|
|
echo '3/3 Seeding super administrator'; \
|
|
echo '========================================'; \
|
|
npm run seed:super-admin; \
|
|
echo '========================================'; \
|
|
echo 'Database initialization completed'; \
|
|
echo '========================================'; \
|
|
tail -f /dev/null \
|
|
"] |