Compare commits
2 Commits
5df64b1d2b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1af298f74e | ||
| 755423cf4e |
@@ -1,30 +1,37 @@
|
|||||||
FROM python:3.13-slim
|
FROM python:3.13-slim
|
||||||
|
|
||||||
# Dépendances système pour uv et build éventuel de wheels
|
# System dependencies for uv and potential wheel builds
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends git ca-certificates curl && \
|
apt-get install -y --no-install-recommends git ca-certificates curl && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Installer uv
|
# Install uv
|
||||||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
||||||
|
|
||||||
# Cloner le repo MCP server upstream
|
# Clone the upstream MCP server repository
|
||||||
ARG INFRAHUB_MCP_VERSION=main
|
# Use INFRAHUB_MCP_VERSION to pin a specific tag/branch at build time
|
||||||
RUN git clone --depth 1 --branch ${INFRAHUB_MCP_VERSION} \
|
# When left empty, the repo's default branch is used
|
||||||
https://github.com/opsmill/infrahub-mcp-server.git /app
|
ARG INFRAHUB_MCP_VERSION=""
|
||||||
|
RUN if [ -n "${INFRAHUB_MCP_VERSION}" ]; then \
|
||||||
|
git clone --depth 1 --branch "${INFRAHUB_MCP_VERSION}" \
|
||||||
|
https://github.com/opsmill/infrahub-mcp.git /app; \
|
||||||
|
else \
|
||||||
|
git clone --depth 1 \
|
||||||
|
https://github.com/opsmill/infrahub-mcp.git /app; \
|
||||||
|
fi
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Installer les dépendances Python via uv
|
# Install Python dependencies via uv
|
||||||
RUN uv sync --frozen --no-dev
|
RUN uv sync --frozen --no-dev
|
||||||
|
|
||||||
# Variables d'environnement par défaut
|
# Default environment variables
|
||||||
|
# INFRAHUB_API_TOKEN should be passed at runtime (not baked into the image)
|
||||||
ENV INFRAHUB_ADDRESS=http://localhost:8000
|
ENV INFRAHUB_ADDRESS=http://localhost:8000
|
||||||
ENV INFRAHUB_API_TOKEN=""
|
|
||||||
ENV MCP_HOST=0.0.0.0
|
ENV MCP_HOST=0.0.0.0
|
||||||
ENV MCP_PORT=8001
|
ENV MCP_PORT=8001
|
||||||
|
|
||||||
EXPOSE 8001
|
EXPOSE 8001
|
||||||
|
|
||||||
# Lancer le serveur MCP en mode SSE (accessible via réseau)
|
# Run the MCP server in SSE mode (network-accessible)
|
||||||
ENTRYPOINT ["uv", "run", "fastmcp", "run", "src/infrahub_mcp/server.py:mcp", "--transport", "sse"]
|
ENTRYPOINT ["uv", "run", "fastmcp", "run", "src/infrahub_mcp/server.py:mcp", "--transport", "sse"]
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
# infrahub-mcp
|
# infrahub-mcp
|
||||||
|
|
||||||
Docker image for the Infrahub MCP server ([OpsMill](https://github.com/opsmill/infrahub-mcp-server)).
|
Docker image for the Infrahub MCP server ([OpsMill](https://github.com/opsmill/infrahub-mcp)).
|
||||||
|
|
||||||
Packages the infrahub-mcp-server into a ready-to-use container,
|
Packages the infrahub-mcp server into a ready-to-use container,
|
||||||
running the server in SSE mode on port 8001.
|
running in SSE mode on port 8001.
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
| Variable | Description | Default |
|
| Variable | Description | Default |
|
||||||
|----------------------|----------------------------------|--------------------------|
|
|----------------------|----------------------------------|--------------------------|
|
||||||
| `INFRAHUB_ADDRESS` | Infrahub instance URL | `http://localhost:8000` |
|
| `INFRAHUB_ADDRESS` | Infrahub instance URL | `http://localhost:8000` |
|
||||||
| `INFRAHUB_API_TOKEN` | Infrahub API token | (empty) |
|
| `INFRAHUB_API_TOKEN` | Infrahub API token | *(required at runtime)* |
|
||||||
| `MCP_HOST` | Listen address | `0.0.0.0` |
|
| `MCP_HOST` | Listen address | `0.0.0.0` |
|
||||||
| `MCP_PORT` | Listen port | `8001` |
|
| `MCP_PORT` | Listen port | `8001` |
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
# =============================================================================
|
|
||||||
# Prefect Worker - PostgreSQL Backup
|
|
||||||
#
|
|
||||||
# Image Docker pour un worker Prefect dédié aux sauvegardes PostgreSQL
|
|
||||||
# Inclut les outils nécessaires pour dump PG et upload vers S3 (Garage)
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
FROM prefecthq/prefect:3-python3.12
|
|
||||||
|
|
||||||
LABEL maintainer="Damien Arnodo"
|
|
||||||
LABEL org.opencontainers.image.title="Prefect Worker - PostgreSQL Backup"
|
|
||||||
LABEL org.opencontainers.image.description="Prefect worker with PostgreSQL and S3 tools for database backups"
|
|
||||||
|
|
||||||
# Installation des outils système
|
|
||||||
# - postgresql-client : pg_dump, pg_restore, psql
|
|
||||||
# - git : nécessaire pour cloner les repositories contenant le code des flows
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
postgresql-client \
|
|
||||||
git \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Installation des dépendances Python pour S3 et PostgreSQL
|
|
||||||
RUN pip install --no-cache-dir \
|
|
||||||
boto3 \
|
|
||||||
psycopg2-binary \
|
|
||||||
prefect-aws
|
|
||||||
|
|
||||||
# Création d'un utilisateur non-root
|
|
||||||
RUN useradd -m -u 1000 prefect
|
|
||||||
USER prefect
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Le worker sera démarré via la commande dans docker-compose
|
|
||||||
# CMD ["prefect", "worker", "start", "--pool", "my-pool"]
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# Prefect Worker - PostgreSQL Backup
|
|
||||||
|
|
||||||
Image Docker pour un worker Prefect dédié aux sauvegardes de bases de données PostgreSQL vers un stockage S3-compatible (Garage).
|
|
||||||
|
|
||||||
## Contenu
|
|
||||||
|
|
||||||
- **Base** : `prefecthq/prefect:3-python3.12`
|
|
||||||
- **Outils PostgreSQL** : `pg_dump`, `pg_restore`, `psql`
|
|
||||||
- **Python** : `boto3`, `psycopg2-binary`
|
|
||||||
|
|
||||||
## Utilisation
|
|
||||||
|
|
||||||
### Dans docker-compose
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
prefect-worker:
|
|
||||||
image: gitea.arnodo.fr/damien/prefect-worker-pg-backup:latest
|
|
||||||
environment:
|
|
||||||
- PREFECT_API_URL=http://prefect-server:4200/api
|
|
||||||
command: prefect worker start --pool pg-backup-pool --type process
|
|
||||||
depends_on:
|
|
||||||
- prefect-server
|
|
||||||
```
|
|
||||||
|
|
||||||
### Variables d'environnement requises pour les flows
|
|
||||||
|
|
||||||
| Variable | Description |
|
|
||||||
|----------|-------------|
|
|
||||||
| `PREFECT_API_URL` | URL de l'API Prefect |
|
|
||||||
| `AWS_ACCESS_KEY_ID` | Clé d'accès S3 (Garage) |
|
|
||||||
| `AWS_SECRET_ACCESS_KEY` | Secret S3 (Garage) |
|
|
||||||
| `AWS_ENDPOINT_URL` | Endpoint S3 (ex: `https://s3.garage.example.com`) |
|
|
||||||
|
|
||||||
## Build local
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker build -t prefect-worker-pg-backup:latest images/prefect-worker-pg-backup/
|
|
||||||
```
|
|
||||||
Reference in New Issue
Block a user