|
8 | 8 | "os"
|
9 | 9 | "os/exec"
|
10 | 10 | "path/filepath"
|
| 11 | + "runtime" |
11 | 12 | "strings"
|
12 | 13 |
|
13 | 14 | "github.com/docker/mcp-registry/internal/mcp"
|
@@ -81,6 +82,19 @@ func run(ctx context.Context, name string, listTools bool, pullCommunity bool) e
|
81 | 82 | return nil
|
82 | 83 | }
|
83 | 84 |
|
| 85 | +func buildDockerEnv(additionalEnv ...string) []string { |
| 86 | + env := []string{"PATH=" + os.Getenv("PATH")} |
| 87 | + |
| 88 | + // On Windows, Docker also needs ProgramW6432 |
| 89 | + // See https://github.com/docker/mcp-registry/issues/79 for more details |
| 90 | + programW6432 := os.Getenv("ProgramW6432") |
| 91 | + if runtime.GOOS == "windows" && programW6432 != "" { |
| 92 | + env = append(env, "ProgramW6432="+programW6432) |
| 93 | + } |
| 94 | + |
| 95 | + return append(env, additionalEnv...) |
| 96 | +} |
| 97 | + |
84 | 98 | func buildMcpImage(ctx context.Context, server servers.Server) error {
|
85 | 99 | projectURL := server.Source.Project
|
86 | 100 | branch := server.Source.Branch
|
@@ -115,10 +129,10 @@ func buildMcpImage(ctx context.Context, server servers.Server) error {
|
115 | 129 |
|
116 | 130 | if token != "" {
|
117 | 131 | cmd = exec.CommandContext(ctx, "docker", "buildx", "build", "--secret", "id=GIT_AUTH_TOKEN", "-f", server.GetDockerfile(), "-t", "check", "-t", server.Image, "--label", "org.opencontainers.image.revision="+sha, gitURL)
|
118 |
| - cmd.Env = []string{"GIT_AUTH_TOKEN=" + token, "PATH=" + os.Getenv("PATH")} |
| 132 | + cmd.Env = buildDockerEnv("GIT_AUTH_TOKEN=" + token) |
119 | 133 | } else {
|
120 | 134 | cmd = exec.CommandContext(ctx, "docker", "buildx", "build", "-f", server.GetDockerfile(), "-t", "check", "-t", server.Image, "--label", "org.opencontainers.image.revision="+sha, gitURL)
|
121 |
| - cmd.Env = []string{"PATH=" + os.Getenv("PATH")} |
| 135 | + cmd.Env = buildDockerEnv() |
122 | 136 | }
|
123 | 137 |
|
124 | 138 | cmd.Dir = os.TempDir()
|
|
0 commit comments