package main import ( "github.com/docker/docker/api/types/mount" "github.com/nemunaire/minifaas/engine/docker" ) type Job struct { Image string Cmd []string DataMount bool } var jobs = map[string]Job{ "counter": { Image: "alpine", Cmd: []string{"sh", "-c", "touch /data/work_done; for i in `seq 10`; do echo $i; sleep 0.5; done"}, DataMount: true, }, } func RunJob(jobtype string) (string, error) { var mnts []mount.Mount if jobs[jobtype].DataMount { myVolume, err := docker.CreateVolumeDir("/data", false) if err != nil { return "", err } mnts = append(mnts, *myVolume) } // Check if the image is here hasimg, err := docker.HasImage(jobs[jobtype].Image) if err != nil { return "", err } if !hasimg { err = docker.PullImage(jobs[jobtype].Image) if err != nil { return "", err } } return docker.Create( jobtype, jobs[jobtype].Image, jobs[jobtype].Cmd, mnts, ) }