Add Docker with MariaDB support

- 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
This commit is contained in:
2026-04-24 13:17:31 -03:00
parent f5e43de192
commit cc47981915
4 changed files with 93 additions and 22 deletions
+30 -13
View File
@@ -9,31 +9,48 @@ RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Backend + Nginx
# Stage 2: Full stack with MariaDB
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist dist
# 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.js server/
COPY server/db.js server/
# Install nginx
RUN apk add --no-cache nginx && mkdir -p /usr/share/nginx/html
COPY server/ server/
# Copy nginx config
COPY nginx.conf /etc/nginx/http.d/default.conf
# Create nginx directories
# Create directories
RUN mkdir -p /run/nginx
# Copy built frontend to nginx html directory
RUN cp -r dist/* /usr/share/nginx/html/
# Copy entrypoint script
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
EXPOSE 80 4000
EXPOSE 80 4000 3306
# Start both nginx and the backend
CMD nginx && node server/server.js
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"]