mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 17:37:46 +08:00
Merge pull request #959 from tonistiigi/docker-proxy-config
set build-args from docker proxy configuration
This commit is contained in:
commit
10debb577e
@ -93,6 +93,7 @@ type DriverInfo struct {
|
|||||||
Platform []specs.Platform
|
Platform []specs.Platform
|
||||||
Err error
|
Err error
|
||||||
ImageOpt imagetools.Opt
|
ImageOpt imagetools.Opt
|
||||||
|
ProxyConfig map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
type DockerAPI interface {
|
type DockerAPI interface {
|
||||||
@ -339,7 +340,8 @@ func toRepoOnly(in string) (string, error) {
|
|||||||
return strings.Join(out, ","), nil
|
return strings.Join(out, ","), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func toSolveOpt(ctx context.Context, d driver.Driver, multiDriver bool, opt Options, bopts gateway.BuildOpts, configDir string, pw progress.Writer, dl dockerLoadCallback) (solveOpt *client.SolveOpt, release func(), err error) {
|
func toSolveOpt(ctx context.Context, di DriverInfo, multiDriver bool, opt Options, bopts gateway.BuildOpts, configDir string, pw progress.Writer, dl dockerLoadCallback) (solveOpt *client.SolveOpt, release func(), err error) {
|
||||||
|
d := di.Driver
|
||||||
defers := make([]func(), 0, 2)
|
defers := make([]func(), 0, 2)
|
||||||
releaseF := func() {
|
releaseF := func() {
|
||||||
for _, f := range defers {
|
for _, f := range defers {
|
||||||
@ -548,6 +550,12 @@ func toSolveOpt(ctx context.Context, d driver.Driver, multiDriver bool, opt Opti
|
|||||||
so.FrontendAttrs["label:"+k] = v
|
so.FrontendAttrs["label:"+k] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range di.ProxyConfig {
|
||||||
|
if _, ok := opt.BuildArgs[k]; !ok {
|
||||||
|
so.FrontendAttrs["build-arg:"+k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// set platforms
|
// set platforms
|
||||||
if len(opt.Platforms) != 0 {
|
if len(opt.Platforms) != 0 {
|
||||||
pp := make([]string, len(opt.Platforms))
|
pp := make([]string, len(opt.Platforms))
|
||||||
@ -642,12 +650,12 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
|
|||||||
multiDriver := len(m[k]) > 1
|
multiDriver := len(m[k]) > 1
|
||||||
hasMobyDriver := false
|
hasMobyDriver := false
|
||||||
for i, dp := range m[k] {
|
for i, dp := range m[k] {
|
||||||
d := drivers[dp.driverIndex].Driver
|
di := drivers[dp.driverIndex]
|
||||||
if d.IsMobyDriver() {
|
if di.Driver.IsMobyDriver() {
|
||||||
hasMobyDriver = true
|
hasMobyDriver = true
|
||||||
}
|
}
|
||||||
opt.Platforms = dp.platforms
|
opt.Platforms = dp.platforms
|
||||||
so, release, err := toSolveOpt(ctx, d, multiDriver, opt, dp.bopts, configDir, w, func(name string) (io.WriteCloser, func(), error) {
|
so, release, err := toSolveOpt(ctx, di, multiDriver, opt, dp.bopts, configDir, w, func(name string) (io.WriteCloser, func(), error) {
|
||||||
return newDockerLoader(ctx, docker, name, w)
|
return newDockerLoader(ctx, docker, name, w)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -75,6 +75,7 @@ func driversForNodeGroup(ctx context.Context, dockerCli command.Cli, ng *store.N
|
|||||||
di := build.DriverInfo{
|
di := build.DriverInfo{
|
||||||
Name: n.Name,
|
Name: n.Name,
|
||||||
Platform: n.Platforms,
|
Platform: n.Platforms,
|
||||||
|
ProxyConfig: storeutil.GetProxyConfig(dockerCli),
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
dis[i] = di
|
dis[i] = di
|
||||||
@ -267,6 +268,7 @@ func getDefaultDrivers(ctx context.Context, dockerCli command.Cli, defaultOnly b
|
|||||||
Name: "default",
|
Name: "default",
|
||||||
Driver: d,
|
Driver: d,
|
||||||
ImageOpt: imageopt,
|
ImageOpt: imageopt,
|
||||||
|
ProxyConfig: storeutil.GetProxyConfig(dockerCli),
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,32 @@ func GetCurrentEndpoint(dockerCli command.Cli) (string, error) {
|
|||||||
return de, nil
|
return de, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetProxyConfig(dockerCli command.Cli) map[string]string {
|
||||||
|
cfg := dockerCli.ConfigFile()
|
||||||
|
host := dockerCli.Client().DaemonHost()
|
||||||
|
|
||||||
|
proxy, ok := cfg.Proxies[host]
|
||||||
|
if !ok {
|
||||||
|
proxy = cfg.Proxies["default"]
|
||||||
|
}
|
||||||
|
|
||||||
|
m := map[string]string{}
|
||||||
|
|
||||||
|
if v := proxy.HTTPProxy; v != "" {
|
||||||
|
m["HTTP_PROXY"] = v
|
||||||
|
}
|
||||||
|
if v := proxy.HTTPSProxy; v != "" {
|
||||||
|
m["HTTPS_PROXY"] = v
|
||||||
|
}
|
||||||
|
if v := proxy.NoProxy; v != "" {
|
||||||
|
m["NO_PROXY"] = v
|
||||||
|
}
|
||||||
|
if v := proxy.FTPProxy; v != "" {
|
||||||
|
m["FTP_PROXY"] = v
|
||||||
|
}
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
// GetDockerEndpoint returns docker endpoint string for given context
|
// GetDockerEndpoint returns docker endpoint string for given context
|
||||||
func GetDockerEndpoint(dockerCli command.Cli, name string) (string, error) {
|
func GetDockerEndpoint(dockerCli command.Cli, name string) (string, error) {
|
||||||
list, err := dockerCli.ContextStore().List()
|
list, err := dockerCli.ContextStore().List()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user