- Dockerfile now includes MariaDB server - Add docker-entrypoint.sh to initialize DB, create user, and set permissions - docker-compose.yml with configurable environment variables - Nginx config proxies API to backend
56 lines
1.2 KiB
Docker
56 lines
1.2 KiB
Docker
# 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=root
|
|
ENV DB_PASSWORD=
|
|
ENV DB_NAME=hospital
|
|
|
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
|
CMD ["nginx.sh", "node", "server/api-mariadb.js"] |