|
1 | | -## syntax=docker/dockerfile:1.4 |
2 | | -#FROM golang:1.24-alpine AS builder |
3 | | -#ENV CGO_ENABLED=0 |
4 | | -#WORKDIR /backend |
5 | | -#COPY backend/go.* . |
6 | | -#RUN --mount=type=cache,target=/go/pkg/mod \ |
7 | | -#--mount=type=cache,target=/root/.cache/go-build \ |
8 | | -#go mod download |
9 | | -#COPY backend/. . |
10 | | -#RUN --mount=type=cache,target=/go/pkg/mod \ |
11 | | -#--mount=type=cache,target=/root/.cache/go-build \ |
12 | | -#go build -trimpath -ldflags="-s -w" -o bin/service |
| 1 | +# syntax=docker/dockerfile:1 |
13 | 2 |
|
14 | | -FROM --platform=$BUILDPLATFORM node:23-alpine3.20 AS client-builder |
| 3 | +FROM alpine:3.21@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c AS alpine |
| 4 | + |
| 5 | +FROM --platform=$BUILDPLATFORM node:23-alpine3.21@sha256:86703151a18fcd06258e013073508c4afea8e19cd7ed451554221dd00aea83fc AS client-builder |
15 | 6 | WORKDIR /ui |
16 | 7 | COPY ui/package.json ui/package-lock.json ./ |
17 | | -RUN --mount=type=cache,target=/usr/src/app/.npm \ |
18 | | - npm set cache /usr/src/app/.npm && \ |
19 | | - npm ci |
| 8 | +RUN --mount=type=cache,target=/root/.npm npm ci |
20 | 9 | COPY ui/. . |
21 | | -RUN npm run build |
| 10 | +RUN --mount=type=cache,target=/root/.npm npm run build |
| 11 | + |
| 12 | +FROM alpine AS pull-catalog-images |
| 13 | +RUN apk add --no-cache curl yq |
| 14 | +COPY --from=prompts catalog.yaml / |
| 15 | +RUN <<EOT |
| 16 | + set -eo pipefail |
22 | 17 |
|
23 | | -FROM alpine:3.20 |
| 18 | + mkdir -p /icons |
| 19 | + cat /catalog.yaml | yq -r '.registry[].icon' | while read -r iconUrl; do |
| 20 | + name=$(echo -n "$iconUrl" | md5sum | cut -d' ' -f1) |
| 21 | + echo "${iconUrl} -> ${name}" |
| 22 | + curl -fSl "$iconUrl" -o "/icons/${name}" |
| 23 | + done |
| 24 | +EOT |
| 25 | + |
| 26 | +FROM alpine |
24 | 27 | ARG TARGETARCH |
25 | 28 | LABEL org.opencontainers.image.title="Docker MCP Toolkit" \ |
26 | | - org.opencontainers.image.description="Docker MCP Toolkit is a Docker Desktop Extension allowing to connect dockerized MCP servers to MCP Clients" \ |
| 29 | + org.opencontainers.image.description="Docker MCP Toolkit is a Docker Desktop Extension allowing to connect dockerized MCP servers to MCP clients" \ |
27 | 30 | org.opencontainers.image.vendor="Docker Inc" \ |
28 | 31 | com.docker.desktop.extension.api.version="0.3.4" \ |
29 | 32 | com.docker.extension.screenshots='[{"alt":"screenshot of the extension UI", "url":"https://raw.githubusercontent.com/docker/labs-ai-tools-for-devs/refs/heads/main/src/extension/ui/src/assets/screenshots/screenshot1.png"}, {"alt":"Screenshot of Tile configuration", "url":"https://raw.githubusercontent.com/docker/labs-ai-tools-for-devs/refs/heads/main/src/extension/ui/src/assets/screenshots/screenshot2.png"}, {"alt":"Screenshot of MCP Client configuration", "url":"https://raw.githubusercontent.com/docker/labs-ai-tools-for-devs/refs/heads/main/src/extension/ui/src/assets/screenshots/screenshot3.png"}]' \ |
30 | 33 | com.docker.desktop.extension.icon="https://raw.githubusercontent.com/docker/labs-ai-tools-for-devs/main/src/extension/ui/src/assets/extension-icon.png" \ |
31 | | - com.docker.extension.detailed-description="Browse the Docker MCP Catalog and connect Dockerized MCP servers to your favorite MCP Client" \ |
| 34 | + com.docker.extension.detailed-description="Browse and connect Dockerized MCP servers to your favorite MCP clients" \ |
32 | 35 | com.docker.extension.publisher-url="https://www.docker.com/" \ |
33 | 36 | com.docker.extension.additional-urls="https://hub.docker.com/catalogs/mcp" \ |
34 | 37 | com.docker.extension.categories="utility-tools" \ |
35 | 38 | com.docker.extension.changelog="Added MCP catalog" |
36 | 39 |
|
37 | | -#COPY --from=builder /backend/bin/service / |
38 | | -COPY docker-compose.yaml . |
39 | | -COPY metadata.json . |
40 | | -COPY extension-icon.svg /extension-icon.svg |
| 40 | +COPY docker-compose.yaml metadata.json extension-icon.svg / |
41 | 41 | COPY host-binary/dist/windows-${TARGETARCH}/host-binary.exe /windows/host-binary.exe |
42 | 42 | COPY host-binary/dist/darwin-${TARGETARCH}/host-binary /darwin/host-binary |
43 | 43 | COPY host-binary/dist/linux-${TARGETARCH}/host-binary /linux/host-binary |
| 44 | +COPY --from=pull-catalog-images /icons ui/static-assets |
44 | 45 | COPY --from=client-builder /ui/build ui |
45 | | -#COPY data /data |
46 | | - |
47 | | -#CMD ["/service", "-socket", "/run/guest-services/backend.sock"] |
0 commit comments