Browse Source

Implement EXPOSE to builder

Guillaume J. Charmes 12 years ago
parent
commit
ae1e655fb1
1 changed files with 29 additions and 0 deletions
  1. 29 0
      builder.go

+ 29 - 0
builder.go

@@ -262,6 +262,35 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e
 			// use the base as the new image
 			// use the base as the new image
 			image = base
 			image = base
 
 
+			break
+		case "expose":
+			ports := strings.Split(arguments, " ")
+
+			fmt.Fprintf(stdout, "EXPOSE %v\n", ports)
+			if image == nil {
+				return nil, fmt.Errorf("Please provide a source image with `from` prior to copy")
+			}
+
+			// Create the container and start it
+			c, err := builder.Create(&Config{Image: image.Id, Cmd: []string{"", ""}})
+			if err != nil {
+				return nil, err
+			}
+			if err := c.Start(); err != nil {
+				return nil, err
+			}
+			tmpContainers[c.Id] = struct{}{}
+
+			// Commit the container
+			base, err = builder.Commit(c, "", "", "", maintainer, &Config{PortSpecs: ports})
+			if err != nil {
+				return nil, err
+			}
+			tmpImages[base.Id] = struct{}{}
+
+			fmt.Fprintf(stdout, "===> %s\n", base.ShortId())
+
+			image = base
 			break
 			break
 		case "insert":
 		case "insert":
 			if image == nil {
 			if image == nil {