Add support for finding docker daemon from common socket paths (#263)
Caused by #260
act_runner will fail to start if user does not set `docker_host` configuration and `DOCKER_HOST` env. This PR adds the support for finding docker daemon from common socket paths so act_runner could detect the docker socket from these paths.
The `commonSocketPaths` is from [nektos/act](e60018a6d9/cmd/root.go (L124-L131)
)
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/263
Co-authored-by: Zettat123 <zettat123@noreply.gitea.com>
Co-committed-by: Zettat123 <zettat123@noreply.gitea.com>
This commit is contained in:
parent
cf48ed88ba
commit
f2629f2ea3
|
@ -8,6 +8,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -160,6 +161,15 @@ func initLogging(cfg *config.Config) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var commonSocketPaths = []string{
|
||||||
|
"/var/run/docker.sock",
|
||||||
|
"/var/run/podman/podman.sock",
|
||||||
|
"$HOME/.colima/docker.sock",
|
||||||
|
"$XDG_RUNTIME_DIR/docker.sock",
|
||||||
|
`\\.\pipe\docker_engine`,
|
||||||
|
"$HOME/.docker/run/docker.sock",
|
||||||
|
}
|
||||||
|
|
||||||
func getDockerSocketPath(configDockerHost string) (string, error) {
|
func getDockerSocketPath(configDockerHost string) (string, error) {
|
||||||
// a `-` means don't mount the docker socket to job containers
|
// a `-` means don't mount the docker socket to job containers
|
||||||
if configDockerHost != "" && configDockerHost != "-" {
|
if configDockerHost != "" && configDockerHost != "-" {
|
||||||
|
@ -171,5 +181,14 @@ func getDockerSocketPath(configDockerHost string) (string, error) {
|
||||||
return socket, nil
|
return socket, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, p := range commonSocketPaths {
|
||||||
|
if _, err := os.Lstat(os.ExpandEnv(p)); err == nil {
|
||||||
|
if strings.HasPrefix(p, `\\.\`) {
|
||||||
|
return "npipe://" + filepath.ToSlash(os.ExpandEnv(p)), nil
|
||||||
|
}
|
||||||
|
return "unix://" + filepath.ToSlash(os.ExpandEnv(p)), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return "", fmt.Errorf("daemon Docker Engine socket not found and docker_host config was invalid")
|
return "", fmt.Errorf("daemon Docker Engine socket not found and docker_host config was invalid")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue