run_opts.go 920 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package cmd
  2. import (
  3. "strconv"
  4. "strings"
  5. "github.com/docker/api/containers"
  6. )
  7. type runOpts struct {
  8. name string
  9. publish []string
  10. }
  11. func toPorts(ports []string) ([]containers.Port, error) {
  12. var result []containers.Port
  13. for _, port := range ports {
  14. parts := strings.Split(port, ":")
  15. source, err := strconv.ParseUint(parts[0], 10, 32)
  16. if err != nil {
  17. return nil, err
  18. }
  19. destination, err := strconv.ParseUint(parts[1], 10, 32)
  20. if err != nil {
  21. return nil, err
  22. }
  23. result = append(result, containers.Port{
  24. Source: uint32(source),
  25. Destination: uint32(destination),
  26. })
  27. }
  28. return result, nil
  29. }
  30. func (r *runOpts) ToContainerConfig(image string) (containers.ContainerConfig, error) {
  31. publish, err := toPorts(r.publish)
  32. if err != nil {
  33. return containers.ContainerConfig{}, err
  34. }
  35. return containers.ContainerConfig{
  36. ID: r.name,
  37. Image: image,
  38. Ports: publish,
  39. }, nil
  40. }