agentbond-api / Dockerfile
Karan6124's picture
feat: use a python helper script to inject Grafana key into prometheus.yml on startup
ad6baed
Raw
History Blame Contribute Delete
1.46 kB
FROM python:3.12-slim
# Prevent python from writing pyc files and buffering stdout/stderr
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# Set the working directory
WORKDIR /code
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
supervisor \
wget \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Download and install Prometheus
RUN wget https://github.com/prometheus/prometheus/releases/download/v2.51.2/prometheus-2.51.2.linux-amd64.tar.gz && \
tar -xvf prometheus-2.51.2.linux-amd64.tar.gz && \
mv prometheus-2.51.2.linux-amd64/prometheus /usr/local/bin/ && \
mv prometheus-2.51.2.linux-amd64/promtool /usr/local/bin/ && \
rm -rf prometheus-2.51.2.linux-amd64*
# Copy pyproject.toml and build files
COPY pyproject.toml ./
# Install python dependencies first to cache this layer
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -e .
# Copy prometheus configuration file
COPY prometheus.yml /code/prometheus.yml
# Copy environment variable injection script
COPY inject_key.py /code/inject_key.py
# Copy supervisord config
COPY supervisord.conf /etc/supervisor/supervisord.conf
# Copy application files
COPY app /code/app
# Expose Hugging Face Space default port
EXPOSE 7860
# Run supervisord to manage FastAPI and Celery worker
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]