tsc do dist kopiruje jen .js, takze .sql migrace by v containeru chybely. Aplikace by spadla na migracich a jela dal v pameti, tedy presne to, co ma databaze resit. Cesta odpovida dist/db/migrations, odkud si je hleda src/db/migrate.ts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
26 lines
867 B
Docker
26 lines
867 B
Docker
FROM node:20-slim AS build
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm install
|
|
COPY . .
|
|
# Zbuilduje server (tsc -> dist) i web (vite -> dist/public)
|
|
RUN npm run build
|
|
|
|
FROM node:20-slim
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
ENV PORT=3000
|
|
EXPOSE 3000
|
|
COPY package*.json ./
|
|
RUN npm install --omit=dev
|
|
COPY --from=build /app/dist ./dist
|
|
# Skripty konektoru jsou obycejny JavaScript, nekompiluji se. Musi se ale
|
|
# dostat do image, jinak by konektory nemely zadnou vykonnou cast.
|
|
COPY --from=build /app/scripts ./scripts
|
|
# Migrace jsou .sql, ktere tsc do dist nekopiruje. Bez nich by se schema
|
|
# nevytvorilo, aplikace by spadla na migracich a jela dal v pameti - tedy presne
|
|
# to, co ma databaze resit. Cesta musi odpovidat dist/db/migrations, protoze
|
|
# odtud si je hleda src/db/migrate.ts.
|
|
COPY --from=build /app/src/db/migrations ./dist/db/migrations
|
|
CMD ["npm", "start"]
|