func RunDockerContainer(cmd string) { herokuClient := HttpClient() request := MakeRequest(appName, "config-vars", "") resp, err := herokuClient.Do(request) if err != nil { panic("do request") } herokuEnv, err := ioutil.ReadAll(resp.Body) if err != nil { panic("read response") } fmt.Println("Heroku Env:", string(herokuEnv)) cwd, _ := os.Getwd() dClient, err := dockerClient.NewClient("unix:///var/run/docker.sock") if err != nil { panic("new client") } var config docker.Config exposedPorts := make(map[docker.Port]struct{}) exposedPorts["80"] = struct{}{} volumes := make(map[string]struct{}) volumes["/app"] = struct{}{} config.Volumes = volumes config.ExposedPorts = exposedPorts config.Cmd = []string{"/bin/bash", "-c", cmd} config.Env = []string{"PORT=80"} config.Image = "heroku-runtime" config.WorkingDir = "/app" container, err := dClient.CreateContainer(dockerClient.CreateContainerOptions{}, &config) if err != nil { panic("create container") } err = dClient.StartContainer(container.ID, &docker.HostConfig{Binds: []string{cwd + "/app:/app"}}) if err != nil { panic("start container") } fmt.Fprintf(os.Stdout, "%s\n", container.ID) }