imkFinal/backend/Dockerfile
2025-03-31 10:11:35 +02:00

63 lines
1.3 KiB
Docker

# backend/Dockerfile
FROM node:18-alpine
# Add build arguments
ARG NODE_ENV
ARG API_URL
ARG CORS_ORIGIN
ARG DATABASE_URL
ARG JWT_SECRET
ARG SMTP_HOST
ARG SMTP_PORT
ARG SMTP_USER
ARG SMTP_PASS
ARG EMAIL_FROM
# Set environment variables from build args
ENV NODE_ENV=${NODE_ENV}
ENV API_URL=${API_URL}
ENV CORS_ORIGIN=${CORS_ORIGIN}
ENV DATABASE_URL=${DATABASE_URL}
ENV JWT_SECRET=${JWT_SECRET}
ENV SMTP_HOST=${SMTP_HOST}
ENV SMTP_PORT=${SMTP_PORT}
ENV SMTP_USER=${SMTP_USER}
ENV SMTP_PASS=${SMTP_PASS}
ENV EMAIL_FROM=${EMAIL_FROM}
WORKDIR /usr/src/app
# Install necessary tools
RUN apk add --no-cache curl wget
# Copy package files
COPY package*.json ./
COPY prisma ./prisma/
# Install dependencies
RUN npm install --omit-dev
# Copy prisma schema
# COPY prisma ./prisma/
# Generate Prisma client
RUN npx prisma generate
RUN npx prisma migrate deploy
# Copy source code
COPY . .
# Build the application
RUN npm run build
# Expose port
EXPOSE 3000
# ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /wait-for-it.sh
# RUN chmod +x /wait-for-it.sh
# Add healthcheck
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD wget -q --spider http://localhost:3000/health || exit 1
# Start the application
CMD ["npm", "run", "start:prod"]