# Stage 1: Build frontend
FROM node:20-alpine AS builder

WORKDIR /app

COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build

# Stage 2: Full stack with MariaDB
FROM node:20-alpine

WORKDIR /app

# Install MariaDB and nginx
RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx

# Initialize MariaDB data directory
RUN mkdir -p /run/mysqld && \
    chown -R mysql:mysql /run/mysqld && \
    chown -R mysql:mysql /var/lib/mysql

# Copy MariaDB config
RUN sed -i 's/\[mysqld\]/[mysqld]\ncharacter-set-server=utf8mb4\ncollation-server=utf8mb4_unicode_ci/' /etc/my.cnf.d/mariadb.cnf || true

# Copy built frontend
COPY --from=builder /app/dist /usr/share/nginx/html

# Copy server files
COPY server/package*.json server/
RUN cd server && npm ci

COPY server/ server/

# Copy nginx config
COPY nginx.conf /etc/nginx/http.d/default.conf

# Create directories
RUN mkdir -p /run/nginx

# Copy entrypoint script
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh

EXPOSE 80 4000 3306

ENV DB_HOST=localhost
ENV DB_PORT=3306
ENV DB_USER=hospital
ENV DB_PASSWORD=hospital123
ENV DB_NAME=hospital
ENV ADMIN_DNI=00000000
ENV ADMIN_PASSWORD=Admin123!

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx.sh", "node", "server/api-mariadb.js"]