Skip to content

Conversation

@SamMorrowDrums
Copy link
Collaborator

@SamMorrowDrums SamMorrowDrums commented Jul 4, 2025

As a first step to enabling shell access in our Docker image for developers that wish to use an image with a distro, this adds Dockerfile-with-shell to the repository root and can be run like so:

docker build --file  Dockerfile-with-shell . --tag ghcr.io/github/github-mcp-server:sh 
docker run --rm -it --entrypoint /bin/sh ghcr.io/github/github-mcp-server:sh 

In future we could consider letting this be a later build stage in our main Dockerfile and for our releases use the specific distroless build stage, while enabling others to build with a distro by default which is more common.

Motivation: #574
Docker's custom override: dgageot@2e73e0a
The Docker MCP Hub listing that points to unsanctioned (by GitHub) fork: https://hub.docker.com/r/mcp/github-mcp-server

CC @dgageot

Copilot AI review requested due to automatic review settings July 4, 2025 10:57
@SamMorrowDrums SamMorrowDrums requested a review from a team as a code owner July 4, 2025 10:57
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds a new multi-stage Dockerfile to support interactive shell access for developers by building the Go server on Alpine and producing a shell-enabled runtime image.

  • Introduces Dockerfile-with-shell with a build stage (including Git and Go caching) and a runtime stage with ca-certificates.
  • Provides default ENTRYPOINT and CMD for running the compiled server.
  • Enables developers to build and run the image with /bin/sh for distro-based debugging.
Comments suppressed due to low confidence (1)

Dockerfile-with-shell:1

  • Consider adding updates to the project README (or a docs file) with instructions on how to build and run this new Dockerfile (e.g., docker build -f Dockerfile-with-shell . -t <tag> and the recommended docker run flags) so developers can discover and use it easily.
FROM golang:1.24.4-alpine AS build

-o /bin/github-mcp-server cmd/github-mcp-server/main.go

# Make a stage to run the app
FROM alpine:3.21
Copy link

Copilot AI Jul 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] To improve clarity and allow targeted builds, you might name the runtime stage (e.g., FROM alpine:3.21 AS runtime) so consumers can explicitly reference it when building or inspecting images.

Suggested change
FROM alpine:3.21
FROM alpine:3.21 AS runtime

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants