Ctrl K
ComunidadGuías…

cli/dockercompose/run.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package dockercompose

import (
	"fmt"
	"strconv"

	"github.com/nhost/be/services/mimir/model"
)

func runVolumeName(
	runName string,
	volumeName string,
	branchName string,
) string {
	return fmt.Sprintf("%s-run-%s-%s", sanitizeBranch(branchName), runName, volumeName)
}

func run(
	cfg *model.ConfigRunServiceConfig,
	branchName string,
) *Service {
	env := map[string]string{}
	for _, e := range cfg.GetEnvironment() {
		env[e.GetName()] = e.GetValue()
	}

	ports := make([]Port, 0, len(cfg.GetPorts()))
	for _, p := range cfg.GetPorts() {
		if deptr(p.GetPublish()) {
			proto := "tcp"
			if p.GetType() == "udp" {
				proto = p.GetType()
			}

			ports = append(ports, Port{
				Mode:      "ingress",
				Target:    uint(p.GetPort()),
				Published: strconv.FormatUint(uint64(p.GetPort()), 10),
				Protocol:  proto,
			})
		}
	}

	volumes := make([]Volume, 0, len(cfg.GetResources().GetStorage()))
	for _, s := range cfg.GetResources().GetStorage() {
		volumes = append(volumes, Volume{
			Type:     "volume",
			Source:   runVolumeName(cfg.GetName(), s.GetName(), branchName),
			Target:   s.GetPath(),
			ReadOnly: new(false),
		})
	}

	return &Service{
		Image:       cfg.GetImage().GetImage(),
		DependsOn:   map[string]DependsOn{},
		EntryPoint:  cfg.GetCommand(),
		Command:     []string{},
		Environment: env,
		ExtraHosts:  extraHosts,
		HealthCheck: nil,
		Labels:      map[string]string{},
		Networks:    nil,
		Ports:       ports,
		Restart:     "always",
		User:        nil,
		Volumes:     volumes,
		WorkingDir:  nil,
	}
}