diff options
Diffstat (limited to 'servers/gitlab_glab/Dockerfile')
| -rw-r--r-- | servers/gitlab_glab/Dockerfile | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/servers/gitlab_glab/Dockerfile b/servers/gitlab_glab/Dockerfile new file mode 100644 index 0000000..db86015 --- /dev/null +++ b/servers/gitlab_glab/Dockerfile @@ -0,0 +1,66 @@ +# Multi-stage build for GitLab CLI MCP Server + +# Stage 1: Build stage +FROM python:3.11-slim AS builder + +# Set working directory +WORKDIR /app + +# Install build dependencies +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Install uv +RUN curl -sSf https://astral.sh/uv/install.sh | sh + +# Copy project files +COPY pyproject.toml README.md ./ +COPY src/ ./src/ + +# Build the package +RUN /root/.cargo/bin/uv pip install --no-cache-dir -e . + +# Stage 2: Runtime stage +FROM python:3.11-slim + +# Set working directory +WORKDIR /app + +# Install GitLab CLI +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + curl \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Install glab CLI +RUN curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | sh + +# Create a non-root user +RUN useradd -m mcp +USER mcp + +# Create logs directory with proper permissions +RUN mkdir -p /app/logs && chown -R mcp:mcp /app/logs + +# Copy built package from builder stage +COPY --from=builder --chown=mcp:mcp /app /app + +# Set environment variables +ENV PYTHONUNBUFFERED=1 + +# Expose port for remote transport +EXPOSE 8080 + +# Health check +HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ + CMD curl -f http://localhost:8080/health || exit 1 + +# Set entrypoint +ENTRYPOINT ["python", "-m", "mcp_server_gitlab_glab"] + +# Default command +CMD ["--transport", "remote", "--host", "0.0.0.0", "--port", "8080"] |
