| ... | ... |
@@ -200,6 +200,7 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e |
| 200 | 200 |
image, base *Image |
| 201 | 201 |
config *Config |
| 202 | 202 |
maintainer string |
| 203 |
+ env map[string]string = make(map[string]string) |
|
| 203 | 204 |
tmpContainers map[string]struct{} = make(map[string]struct{})
|
| 204 | 205 |
tmpImages map[string]struct{} = make(map[string]struct{})
|
| 205 | 206 |
) |
| ... | ... |
@@ -270,6 +271,10 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e |
| 270 | 270 |
return nil, err |
| 271 | 271 |
} |
| 272 | 272 |
|
| 273 |
+ for key, value := range env {
|
|
| 274 |
+ config.Env = append(config.Env, fmt.Sprintf("%s=%s", key, value))
|
|
| 275 |
+ } |
|
| 276 |
+ |
|
| 273 | 277 |
if cache, err := builder.getCachedImage(image, config); err != nil {
|
| 274 | 278 |
return nil, err |
| 275 | 279 |
} else if cache != nil {
|
| ... | ... |
@@ -278,11 +283,21 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e |
| 278 | 278 |
break |
| 279 | 279 |
} |
| 280 | 280 |
|
| 281 |
+ Debugf("Env -----> %v ------ %v\n", config.Env, env)
|
|
| 282 |
+ |
|
| 281 | 283 |
// Create the container and start it |
| 282 | 284 |
c, err := builder.Create(config) |
| 283 | 285 |
if err != nil {
|
| 284 | 286 |
return nil, err |
| 285 | 287 |
} |
| 288 |
+ |
|
| 289 |
+ if os.Getenv("DEBUG") != "" {
|
|
| 290 |
+ out, _ := c.StdoutPipe() |
|
| 291 |
+ err2, _ := c.StderrPipe() |
|
| 292 |
+ go io.Copy(os.Stdout, out) |
|
| 293 |
+ go io.Copy(os.Stdout, err2) |
|
| 294 |
+ } |
|
| 295 |
+ |
|
| 286 | 296 |
if err := c.Start(); err != nil {
|
| 287 | 297 |
return nil, err |
| 288 | 298 |
} |
| ... | ... |
@@ -306,6 +321,21 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e |
| 306 | 306 |
image = base |
| 307 | 307 |
|
| 308 | 308 |
break |
| 309 |
+ case "env": |
|
| 310 |
+ tmp := strings.SplitN(arguments, " ", 2) |
|
| 311 |
+ if len(tmp) != 2 {
|
|
| 312 |
+ return nil, fmt.Errorf("Invalid ENV format")
|
|
| 313 |
+ } |
|
| 314 |
+ key := strings.Trim(tmp[0], " ") |
|
| 315 |
+ value := strings.Trim(tmp[1], " ") |
|
| 316 |
+ fmt.Fprintf(stdout, "ENV %s %s\n", key, value) |
|
| 317 |
+ env[key] = value |
|
| 318 |
+ if image != nil {
|
|
| 319 |
+ fmt.Fprintf(stdout, "===> %s\n", image.ShortId()) |
|
| 320 |
+ } else {
|
|
| 321 |
+ fmt.Fprintf(stdout, "===> <nil>\n") |
|
| 322 |
+ } |
|
| 323 |
+ break |
|
| 309 | 324 |
case "cmd": |
| 310 | 325 |
fmt.Fprintf(stdout, "CMD %s\n", arguments) |
| 311 | 326 |
|