compose.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package compose
  2. import (
  3. "github.com/spf13/cobra"
  4. "github.com/docker/api/client"
  5. "github.com/docker/api/compose"
  6. )
  7. func Command() *cobra.Command {
  8. command := &cobra.Command{
  9. Short: "Docker Compose",
  10. Use: "compose",
  11. }
  12. command.AddCommand(
  13. upCommand(),
  14. downCommand(),
  15. )
  16. return command
  17. }
  18. func upCommand() *cobra.Command {
  19. opts := &compose.ProjectOptions{}
  20. upCmd := &cobra.Command{
  21. Use: "up",
  22. RunE: func(cmd *cobra.Command, args []string) error {
  23. c, err := client.New(cmd.Context())
  24. if err != nil {
  25. return err
  26. }
  27. return c.ComposeService().Up(cmd.Context(), *opts)
  28. },
  29. }
  30. upCmd.Flags().StringVar(&opts.Name, "name", "", "Project name")
  31. upCmd.Flags().StringVar(&opts.WorkDir, "workdir", ".", "Work dir")
  32. upCmd.Flags().StringArrayVarP(&opts.ConfigPaths, "file", "f", []string{}, "Compose configuration files")
  33. upCmd.Flags().StringArrayVarP(&opts.Environment, "environment", "e", []string{}, "Environment variables")
  34. return upCmd
  35. }
  36. func downCommand() *cobra.Command {
  37. opts := &compose.ProjectOptions{}
  38. downCmd := &cobra.Command{
  39. Use: "down",
  40. RunE: func(cmd *cobra.Command, args []string) error {
  41. c, err := client.New(cmd.Context())
  42. if err != nil {
  43. return err
  44. }
  45. return c.ComposeService().Down(cmd.Context(), *opts)
  46. },
  47. }
  48. downCmd.Flags().StringVar(&opts.Name, "name", "", "Project name")
  49. downCmd.Flags().StringVar(&opts.WorkDir, "workdir", ".", "Work dir")
  50. return downCmd
  51. }