65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
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)
|
|
}
|