Files
administracionHospital/Dockerfile
T

54 lines
1.2 KiB
Docker

# 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"]