@@ -70,68 +70,69 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
7070 }()
7171
7272 query := struct {
73- AddHosts string `schema:"extrahosts"`
74- AdditionalCapabilities string `schema:"addcaps"`
75- AllPlatforms bool `schema:"allplatforms"`
76- Annotations string `schema:"annotations"`
77- AppArmor string `schema:"apparmor"`
78- BuildArgs string `schema:"buildargs"`
79- CacheFrom string `schema:"cachefrom"`
80- CgroupParent string `schema:"cgroupparent"` // nolint
81- Compression uint64 `schema:"compression"`
82- ConfigureNetwork string `schema:"networkmode"`
83- CPPFlags string `schema:"cppflags"`
84- CpuPeriod uint64 `schema:"cpuperiod"` // nolint
85- CpuQuota int64 `schema:"cpuquota"` // nolint
86- CpuSetCpus string `schema:"cpusetcpus"` // nolint
87- CpuSetMems string `schema:"cpusetmems"` // nolint
88- CpuShares uint64 `schema:"cpushares"` // nolint
89- DNSOptions string `schema:"dnsoptions"`
90- DNSSearch string `schema:"dnssearch"`
91- DNSServers string `schema:"dnsservers"`
92- Devices string `schema:"devices"`
93- Dockerfile string `schema:"dockerfile"`
94- DropCapabilities string `schema:"dropcaps"`
95- Envs []string `schema:"setenv"`
96- Excludes string `schema:"excludes"`
97- ForceRm bool `schema:"forcerm"`
98- From string `schema:"from"`
99- HTTPProxy bool `schema:"httpproxy"`
100- IdentityLabel bool `schema:"identitylabel"`
101- Ignore bool `schema:"ignore"`
102- Isolation string `schema:"isolation"`
103- Jobs int `schema:"jobs"` // nolint
104- LabelOpts string `schema:"labelopts"`
105- Labels string `schema:"labels"`
106- Layers bool `schema:"layers"`
107- LogRusage bool `schema:"rusage"`
108- Manifest string `schema:"manifest"`
109- MemSwap int64 `schema:"memswap"`
110- Memory int64 `schema:"memory"`
111- NamespaceOptions string `schema:"nsoptions"`
112- NoCache bool `schema:"nocache"`
113- OSFeatures []string `schema:"osfeature"`
114- OSVersion string `schema:"osversion"`
115- OutputFormat string `schema:"outputformat"`
116- Platform []string `schema:"platform"`
117- Pull bool `schema:"pull"`
118- PullPolicy string `schema:"pullpolicy"`
119- Quiet bool `schema:"q"`
120- Registry string `schema:"registry"`
121- Rm bool `schema:"rm"`
122- RusageLogFile string `schema:"rusagelogfile"`
123- Remote string `schema:"remote"`
124- Seccomp string `schema:"seccomp"`
125- Secrets string `schema:"secrets"`
126- SecurityOpt string `schema:"securityopt"`
127- ShmSize int `schema:"shmsize"`
128- Squash bool `schema:"squash"`
129- TLSVerify bool `schema:"tlsVerify"`
130- Tags []string `schema:"t"`
131- Target string `schema:"target"`
132- Timestamp int64 `schema:"timestamp"`
133- Ulimits string `schema:"ulimits"`
134- UnsetEnvs []string `schema:"unsetenv"`
73+ AddHosts string `schema:"extrahosts"`
74+ AdditionalCapabilities string `schema:"addcaps"`
75+ AdditionalBuildContexts string `schema:"additionalbuildcontexts"`
76+ AllPlatforms bool `schema:"allplatforms"`
77+ Annotations string `schema:"annotations"`
78+ AppArmor string `schema:"apparmor"`
79+ BuildArgs string `schema:"buildargs"`
80+ CacheFrom string `schema:"cachefrom"`
81+ CgroupParent string `schema:"cgroupparent"` // nolint
82+ Compression uint64 `schema:"compression"`
83+ ConfigureNetwork string `schema:"networkmode"`
84+ CPPFlags string `schema:"cppflags"`
85+ CpuPeriod uint64 `schema:"cpuperiod"` // nolint
86+ CpuQuota int64 `schema:"cpuquota"` // nolint
87+ CpuSetCpus string `schema:"cpusetcpus"` // nolint
88+ CpuSetMems string `schema:"cpusetmems"` // nolint
89+ CpuShares uint64 `schema:"cpushares"` // nolint
90+ DNSOptions string `schema:"dnsoptions"`
91+ DNSSearch string `schema:"dnssearch"`
92+ DNSServers string `schema:"dnsservers"`
93+ Devices string `schema:"devices"`
94+ Dockerfile string `schema:"dockerfile"`
95+ DropCapabilities string `schema:"dropcaps"`
96+ Envs []string `schema:"setenv"`
97+ Excludes string `schema:"excludes"`
98+ ForceRm bool `schema:"forcerm"`
99+ From string `schema:"from"`
100+ HTTPProxy bool `schema:"httpproxy"`
101+ IdentityLabel bool `schema:"identitylabel"`
102+ Ignore bool `schema:"ignore"`
103+ Isolation string `schema:"isolation"`
104+ Jobs int `schema:"jobs"` // nolint
105+ LabelOpts string `schema:"labelopts"`
106+ Labels string `schema:"labels"`
107+ Layers bool `schema:"layers"`
108+ LogRusage bool `schema:"rusage"`
109+ Manifest string `schema:"manifest"`
110+ MemSwap int64 `schema:"memswap"`
111+ Memory int64 `schema:"memory"`
112+ NamespaceOptions string `schema:"nsoptions"`
113+ NoCache bool `schema:"nocache"`
114+ OSFeatures []string `schema:"osfeature"`
115+ OSVersion string `schema:"osversion"`
116+ OutputFormat string `schema:"outputformat"`
117+ Platform []string `schema:"platform"`
118+ Pull bool `schema:"pull"`
119+ PullPolicy string `schema:"pullpolicy"`
120+ Quiet bool `schema:"q"`
121+ Registry string `schema:"registry"`
122+ Rm bool `schema:"rm"`
123+ RusageLogFile string `schema:"rusagelogfile"`
124+ Remote string `schema:"remote"`
125+ Seccomp string `schema:"seccomp"`
126+ Secrets string `schema:"secrets"`
127+ SecurityOpt string `schema:"securityopt"`
128+ ShmSize int `schema:"shmsize"`
129+ Squash bool `schema:"squash"`
130+ TLSVerify bool `schema:"tlsVerify"`
131+ Tags []string `schema:"t"`
132+ Target string `schema:"target"`
133+ Timestamp int64 `schema:"timestamp"`
134+ Ulimits string `schema:"ulimits"`
135+ UnsetEnvs []string `schema:"unsetenv"`
135136 }{
136137 Dockerfile : "Dockerfile" ,
137138 IdentityLabel : true ,
@@ -375,6 +376,14 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
375376 additionalTags = append (additionalTags , possiblyNormalizedTag )
376377 }
377378
379+ var additionalBuildContexts = map [string ]* buildahDefine.AdditionalBuildContext {}
380+ if _ , found := r .URL .Query ()["additionalbuildcontexts" ]; found {
381+ if err := json .Unmarshal ([]byte (query .AdditionalBuildContexts ), & additionalBuildContexts ); err != nil {
382+ utils .BadRequest (w , "additionalbuildcontexts" , query .AdditionalBuildContexts , err )
383+ return
384+ }
385+ }
386+
378387 var buildArgs = map [string ]string {}
379388 if _ , found := r .URL .Query ()["buildargs" ]; found {
380389 if err := json .Unmarshal ([]byte (query .BuildArgs ), & buildArgs ); err != nil {
@@ -562,12 +571,13 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
562571
563572 runtime := r .Context ().Value (api .RuntimeKey ).(* libpod.Runtime )
564573 buildOptions := buildahDefine.BuildOptions {
565- AddCapabilities : addCaps ,
566- AdditionalTags : additionalTags ,
567- Annotations : annotations ,
568- CPPFlags : cppflags ,
569- Args : buildArgs ,
570- AllPlatforms : query .AllPlatforms ,
574+ AddCapabilities : addCaps ,
575+ AdditionalBuildContexts : additionalBuildContexts ,
576+ AdditionalTags : additionalTags ,
577+ Annotations : annotations ,
578+ CPPFlags : cppflags ,
579+ Args : buildArgs ,
580+ AllPlatforms : query .AllPlatforms ,
571581 CommonBuildOpts : & buildah.CommonBuildOptions {
572582 AddHost : addhosts ,
573583 ApparmorProfile : apparmor ,
0 commit comments