diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..77e5fbd0 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,20 @@ +name: Docker + +on: + push: + branches: [main] + pull_request: + +jobs: + build: + name: Build Docker image + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build Docker image + run: docker build -t glean-mcp-server:test . + + - name: Verify Glean MCP server starts + run: timeout 3 docker run --rm glean-mcp-server:test || [ $? -eq 124 ] diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..e028a27b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM node:20-alpine + +ENV NODE_ENV=production + +WORKDIR /app + +COPY . ./ + +RUN addgroup -g 1001 -S nodejs \ + && adduser -S mcpserver -u 1001 \ + && mkdir -p /app/logs \ + && chown -R mcpserver:nodejs /app /usr/local + +USER mcpserver + +RUN npm install -g rimraf pnpm typescript \ + && pnpm -r install + +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD pgrep -f "node.*mcp-server" || exit 1 + +CMD ["npx", "-y", "@gleanwork/local-mcp-server"]