38 lines
925 B
Docker
38 lines
925 B
Docker
# Backend
|
|
FROM node:18-alpine AS backend
|
|
WORKDIR /usr/src/app/backend
|
|
COPY backend/package*.json ./
|
|
RUN npm install
|
|
RUN npm install typescript
|
|
COPY backend/ ./
|
|
RUN npm run build
|
|
|
|
# Frontend
|
|
FROM node:18-alpine AS frontend
|
|
WORKDIR /usr/src/app/frontend
|
|
COPY frontend/package*.json ./
|
|
RUN npm install
|
|
COPY frontend/ ./
|
|
RUN npm run build
|
|
|
|
# Final image
|
|
FROM node:18-alpine
|
|
WORKDIR /usr/src/app
|
|
|
|
# Create data directory for database persistence
|
|
RUN mkdir -p /data
|
|
|
|
# Set environment variable for data directory
|
|
ENV DATA_DIR=/data
|
|
|
|
COPY --from=backend /usr/src/app/backend/dist ./backend/dist
|
|
COPY --from=backend /usr/src/app/backend/package.json ./backend/package.json
|
|
COPY --from=backend /usr/src/app/backend/node_modules ./backend/node_modules
|
|
COPY --from=frontend /usr/src/app/frontend/build ./frontend/build
|
|
|
|
# Create volume mount point for persistent data
|
|
VOLUME ["/data"]
|
|
|
|
EXPOSE 3001
|
|
CMD ["node", "backend/dist/index.js"]
|