1
0
Эх сурвалжийг харах

Fix edge-case bug path prefix check for watch & bind mounts

Signed-off-by: Matiboux <[email protected]>
Matiboux 8 сар өмнө
parent
commit
9129abe516

+ 5 - 2
pkg/compose/watch.go

@@ -353,8 +353,11 @@ func loadDevelopmentConfig(service types.ServiceConfig, project *types.Project)
 
 func checkIfPathAlreadyBindMounted(watchPath string, volumes []types.ServiceVolumeConfig) bool {
 	for _, volume := range volumes {
-		if volume.Bind != nil && strings.HasPrefix(watchPath, volume.Source) {
-			return true
+		if volume.Bind != nil {
+			relPath, err := filepath.Rel(volume.Source, watchPath)
+			if err == nil && !strings.HasPrefix(relPath, "..") {
+				return true
+			}
 		}
 	}
 	return false

+ 3 - 0
pkg/e2e/fixtures/watch/compose.yaml

@@ -37,4 +37,7 @@ services:
         RUN mkdir -p /app/config
     init: true
     command: sleep infinity
+    volumes:
+      - ./dat:/app/dat
+      - ./data-logs:/app/data-logs
     develop: *x-dev

+ 1 - 0
pkg/e2e/fixtures/watch/dat/meow.dat

@@ -0,0 +1 @@
+i am a wannabe cat

+ 1 - 0
pkg/e2e/fixtures/watch/data-logs/server.log

@@ -0,0 +1 @@
+[INFO] Server started successfully on port 8080