FROM golang:1.25-alpine AS go-builder WORKDIR /src COPY go.mod go.sum ./ COPY cmd ./cmd COPY internal ./internal RUN CGO_ENABLED=0 GOOS=linux go build -o /out/monitoring-pf-server ./cmd/server \ && CGO_ENABLED=0 GOOS=linux go build -o /out/monitoring-pf-bot ./cmd/bot \ && CGO_ENABLED=0 GOOS=linux go build -o /out/monitoring-pf-scheduler ./cmd/scheduler FROM python:3.12-slim ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends tini \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt ./ RUN pip install -r requirements.txt COPY app ./app COPY --from=go-builder /out/monitoring-pf-server /usr/local/bin/monitoring-pf-server COPY --from=go-builder /out/monitoring-pf-bot /usr/local/bin/monitoring-pf-bot COPY --from=go-builder /out/monitoring-pf-scheduler /usr/local/bin/monitoring-pf-scheduler RUN mkdir -p /app/data EXPOSE 8000 ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["/usr/local/bin/monitoring-pf-server"]