From 4db0b183684648b165a8f54408c3f3bec315507d Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen.haas@lakedrops.com>
Date: Thu, 12 Jan 2023 16:03:11 +0100
Subject: [PATCH] docker/gitlab-drupal-ci#17 Save solution to find the correct
 self container

---
 bin/volume.php | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/bin/volume.php b/bin/volume.php
index 31300a1..414f280 100644
--- a/bin/volume.php
+++ b/bin/volume.php
@@ -3,15 +3,27 @@
 
 function readContainerConfig() {
   try {
+    $testString = 'This is a test file for LakeDrops GitLab CI';
+    $filename = '/tmp/' . random_int(100,999) . '.test';
+    file_put_contents($filename, $testString);
     $output = [];
-    exec('basename "$(cat /proc/1/cpuset)"', $output);
-    $id = reset($output);
-    if ($id === '/') {
-      $id = getenv('COMPOSE_PROJECT_NAME') . '_l3d';
+    exec('docker ps -q', $output);
+    $id = NULL;
+    foreach ($output as $id) {
+      $output = [];
+      exec('docker exec ' . $id . ' cat ' . $filename . ' 2>&1', $output);
+      if (reset($output) === $testString) {
+        // Found the container.
+        break;
+      }
+    }
+    unlink($filename);
+    if ($id === NULL) {
+      return [];
     }
     $output = [];
     exec('docker container inspect ' . $id, $output);
-    return json_decode(implode('', $output), TRUE)[0];
+    return json_decode(implode('', $output), TRUE, 512, JSON_THROW_ON_ERROR)[0];
   }
   catch (\Exception $ex) {
     // Ignore.
-- 
GitLab