|
|
|
@ -6,6 +6,7 @@ import (
|
|
|
|
|
"errors"
|
|
|
|
|
"flag"
|
|
|
|
|
"fmt"
|
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
"os/exec"
|
|
|
|
|
"os/user"
|
|
|
|
@ -112,29 +113,32 @@ func EntryPoint(command []string) error {
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = AddUser(os.Getenv("WORKSPACE_USERNAME"), uidString)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if uid != 0 {
|
|
|
|
|
log.Printf("UID: %d", uid)
|
|
|
|
|
err = AddUser(os.Getenv("WORKSPACE_USERNAME"), uidString)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = AddGroup("docker", dockerGidString)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
err = AddGroup("docker", dockerGidString)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = syscall.Setgroups([]int{dockerGid})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
err = syscall.Setgroups([]int{dockerGid})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = syscall.Setgid(int(uid))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
err = syscall.Setgid(int(uid))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = syscall.Setuid(int(uid))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
err = syscall.Setuid(int(uid))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
path, err := exec.LookPath(command[0])
|
|
|
|
@ -167,6 +171,7 @@ func Run(detach bool, mounts []string, command []string) error {
|
|
|
|
|
dockerCommand := []string{
|
|
|
|
|
"/bin/docker", "run", "--network=host",
|
|
|
|
|
"--workdir=" + workDir,
|
|
|
|
|
"--rm",
|
|
|
|
|
"-e", "DISPLAY=" + os.Getenv("DISPLAY"),
|
|
|
|
|
"-e", "WORKSPACE_USER=" + curUser.Uid,
|
|
|
|
|
"-e", "WORKSPACE_USERNAME=" + curUser.Username,
|
|
|
|
|