build: switch Docker images to Debian and optimize build process (#19) Some checks failed release-nightly / release-image (push) Has been cancelled
Some checks failed
release-nightly / release-image (push) Has been cancelled
- Switch base image from `golang:1.24-alpine` to `golang:1.24-bullseye` for the build stage - Update working directory from `/build` to `/app` - Separate the copying of go.mod and go.sum files before downloading dependencies - Add comments for build stages and process steps - Switch final stage base image from `ubuntu:24.04` to `debian:bullseye-slim` - Improve installation of ca-certificates and clean up the apt lists afterward - Create and switch to a non-root user named `gitea-mcp` - Change the file copy command to `--chown=1000:1000 /app/gitea-mcp` - Update `CMD` to use an absolute path `/app/gitea-mcp` Signed-off-by: appleboy <appleboy.tw@gmail.com> Reviewed-on: #19 Co-authored-by: appleboy <appleboy.tw@gmail.com> Co-committed-by: appleboy <appleboy.tw@gmail.com>
This commit was merged in pull request #19.
This commit is contained in:
32 Dockerfile
32
Dockerfile @@ -1,21 +1,37 @@ | ||||
FROM golang:1.24-alpine AS builder | ||||
# Build stage | ||||
FROM golang:1.24-bullseye AS builder | ||||
| ||||
ARG VERSION | ||||
| ||||
WORKDIR /build | ||||
# Set the working directory | ||||
WORKDIR /app | ||||
| ||||
COPY . . | ||||
# Copy go.mod and go.sum files | ||||
COPY go.mod go.sum ./ | ||||
| ||||
# Download dependencies | ||||
RUN go mod download | ||||
| ||||
# Copy the source code | ||||
COPY . . | ||||
| ||||
RUN CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=${VERSION}" -o gitea-mcp | ||||
| ||||
FROM ubuntu:24.04 | ||||
# Final stage | ||||
FROM debian:bullseye-slim | ||||
| ||||
WORKDIR /app | ||||
| ||||
RUN apt-get update \ | ||||
&& apt-get install ca-certificates --no-install-recommends -y | ||||
# Install ca-certificates for HTTPS requests | ||||
RUN apt-get update && \ | ||||
apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* | ||||
| ||||
COPY --from=builder /build/gitea-mcp . | ||||
# Create a non-root user | ||||
RUN useradd -r -u 1000 -m gitea-mcp | ||||
| ||||
CMD ["./gitea-mcp", "-t", "stdio"] | ||||
COPY --from=builder --chown=1000:1000 /app/gitea-mcp . | ||||
| ||||
# Use the non-root user | ||||
USER gitea-mcp | ||||
| ||||
CMD ["/app/gitea-mcp", "-t", "stdio"] |
Reference in New Issue
Block a user