From 8da574f9e5d6b7f0f70d7bf58f6bbb15c58767d1 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 9 Mar 2026 23:44:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitignore=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BB=A5=E5=BF=BD=E7=95=A5=E6=95=B0=E6=8D=AE=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=EF=BC=8C=E4=BF=AE=E6=94=B9=20DockerExecutor=20?= =?UTF-8?q?=E7=9A=84=20RouteConfigDir=20=E4=B8=BA=E7=BB=9D=E5=AF=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E7=9B=B8?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- atsf_agent/.gitignore | 1 + atsf_agent/internal/nginx/manager.go | 6 +++++- atsf_agent/internal/nginx/manager_test.go | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) 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) + } +}