# Stage 1: Build frontend FROM node:20-alpine AS builder WORKDIR /build COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Stage 2: Full stack with MariaDB FROM node:20-alpine WORKDIR /app # Install dependencies RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx bash # Initialize MariaDB directories and schema RUN mkdir -p /run/mysqld /var/lib/mysql && \ chown -R mysql:mysql /run/mysqld /var/lib/mysql && \ mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql # Copy built frontend to nginx COPY --from=builder /build/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 /run/mysqld /var/lib/mysql # Copy entrypoint 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"]