pulse-guard / Dockerfile
hemalathashetty
Fix Grafana installation dependencies in Dockerfile
0ff9027
Raw
History Blame Contribute Delete
2.35 kB
# --- Stage 1: Build the React Frontend ---
FROM node:18-alpine AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm install
COPY frontend/ ./
RUN npm run build
# --- Stage 2: Create the Unified Service ---
FROM python:3.11-slim
# Install system dependencies, Nginx, Redis, curl, wget, and clean up
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
nginx \
redis-server \
wget \
ca-certificates \
libfontconfig1 \
&& rm -rf /var/lib/apt/lists/*
# Adjust Nginx directories for non-root user 1000
RUN mkdir -p /var/lib/nginx /var/log/nginx \
&& chown -R 1000:1000 /var/lib/nginx /var/log/nginx /run /etc/nginx
# Install Prometheus
WORKDIR /tmp
RUN wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz \
&& tar -xf prometheus-2.45.0.linux-amd64.tar.gz \
&& mkdir -p /app/prometheus \
&& cp -r prometheus-2.45.0.linux-amd64/prometheus /app/prometheus/ \
&& cp -r prometheus-2.45.0.linux-amd64/promtool /app/prometheus/ \
&& rm -rf /tmp/*
# Install Grafana
RUN wget https://dl.grafana.com/oss/release/grafana_10.0.3_amd64.deb \
&& dpkg -i grafana_10.0.3_amd64.deb \
&& rm grafana_10.0.3_amd64.deb
# Copy dependencies
WORKDIR /app
COPY services/requirements.txt ./services_req.txt
COPY control_plane/requirements.txt ./control_plane_req.txt
COPY load_generator/requirements.txt ./load_generator_req.txt
RUN pip install --no-cache-dir -r services_req.txt \
&& pip install --no-cache-dir -r control_plane_req.txt \
&& pip install --no-cache-dir -r load_generator_req.txt
# Copy source code and configurations
COPY services /app/services
COPY control_plane /app/control_plane
COPY load_generator /app/load_generator
COPY prometheus.yml /app/prometheus.yml
COPY grafana/provisioning /etc/grafana/provisioning
COPY datasource.yml /etc/grafana/provisioning/datasources/datasource.yml
# Copy static frontend files built in Stage 1
COPY --from=frontend-builder /app/frontend/dist /app/frontend/dist
# Copy customized Nginx config
COPY nginx.conf /etc/nginx/nginx.conf
# Copy startup script
COPY start.sh /app/start.sh
RUN chmod +x /app/start.sh
# Set environment
ENV PYTHONPATH=/app
EXPOSE 7860
# CMD to start uvicorn and Nginx
CMD ["/app/start.sh"]