diff --git a/atsf_agent/.gitignore b/atsf_agent/.gitignore index e69de29b..6320cd24 100644 --- a/atsf_agent/.gitignore +++ b/atsf_agent/.gitignore @@ -0,0 +1 @@ +data \ No newline at end of file diff --git a/atsf_agent/internal/nginx/manager.go b/atsf_agent/internal/nginx/manager.go index 9b4a79a9..a5744fdc 100644 --- a/atsf_agent/internal/nginx/manager.go +++ b/atsf_agent/internal/nginx/manager.go @@ -149,11 +149,15 @@ func NewExecutor(options ExecutorOptions) Executor { Runner: runner, } } + routeConfigDir := filepath.Dir(options.RouteConfigPath) + if absDir, err := filepath.Abs(routeConfigDir); err == nil { + routeConfigDir = absDir + } return &DockerExecutor{ DockerBinary: options.DockerBinary, ContainerName: options.ContainerName, Image: options.Image, - RouteConfigDir: filepath.Dir(options.RouteConfigPath), + RouteConfigDir: routeConfigDir, Runner: runner, } } diff --git a/atsf_agent/internal/nginx/manager_test.go b/atsf_agent/internal/nginx/manager_test.go index 6f6cd0c2..07b254d9 100644 --- a/atsf_agent/internal/nginx/manager_test.go +++ b/atsf_agent/internal/nginx/manager_test.go @@ -5,6 +5,7 @@ import ( "errors" "path/filepath" "reflect" + "strings" "testing" ) @@ -112,3 +113,23 @@ func TestDockerExecutorStartsStoppedContainer(t *testing.T) { t.Fatalf("expected docker exec on third call, got %#v", runner.calls[2]) } } + +func TestNewExecutorUsesAbsoluteDockerMountPath(t *testing.T) { + executor := NewExecutor(ExecutorOptions{ + DockerBinary: "docker", + ContainerName: "atsflare-nginx", + Image: "nginx:stable-alpine", + RouteConfigPath: "./data/etc/nginx/conf.d/atsflare_routes.conf", + }) + + dockerExecutor, ok := executor.(*DockerExecutor) + if !ok { + t.Fatal("expected docker executor") + } + if !filepath.IsAbs(dockerExecutor.RouteConfigDir) { + t.Fatalf("expected absolute route config dir, got %s", dockerExecutor.RouteConfigDir) + } + if !strings.HasSuffix(dockerExecutor.RouteConfigDir, filepath.Clean("data/etc/nginx/conf.d")) { + t.Fatalf("unexpected route config dir: %s", dockerExecutor.RouteConfigDir) + } +}