package deployer import ( "context" "localenv/services" "localenv/utils" "github.com/docker/docker/client" "github.com/docker/docker/errdefs" "github.com/rs/zerolog/log" ) type Swarm struct { ID string cli *client.Client } func (s Swarm) deployServices(ctx context.Context) error { if err := s.createNetworks(ctx); err != nil { return err } if err := s.deployRabbitMQ(ctx); err != nil { return err } if err := s.deployMailhog(ctx); err != nil { return err } if err := s.deployNginx(ctx); err != nil { return err } return nil } func (s Swarm) createNetworks(ctx context.Context) error { log.Info().Str("network", services.NetworkName).Msg("creating network...") if err := utils.CreateNetwork(ctx, s.cli, services.NetworkName); err != nil { if !errdefs.IsConflict(err) { return err } } return nil } func (s Swarm) deployRabbitMQ(ctx context.Context) error { rabbitmq := services.NewRabbitMQ() return rabbitmq.Deploy(ctx, s.cli) } func (s Swarm) deployNginx(ctx context.Context) error { nginx := services.NewNginx() return nginx.Deploy(ctx, s.cli) } func (s Swarm) deployMailhog(ctx context.Context) error { mailhog := services.NewMailhog() return mailhog.Deploy(ctx, s.cli) }