Skip to content

Commit

Permalink
Don't resolve links to compose file
Browse files Browse the repository at this point in the history
docker-compose uses the path to the compose file even if it's symlink to
get the context directory.

Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
  • Loading branch information
p12tic committed Mar 25, 2024
1 parent dab6b1b commit f0bae1e
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 1 deletion.
1 change: 1 addition & 0 deletions newsfragments/dont-resolve-links-to-compose-file.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix compatibility with docker-compose in how symlinks to docker-compose.yml are handled.
1 change: 0 additions & 1 deletion podman_compose.py
Original file line number Diff line number Diff line change
Expand Up @@ -1785,7 +1785,6 @@ def _parse_compose_file(self):
sys.exit(1)
# make absolute
relative_files = files
files = list(map(os.path.realpath, files))
filename = files[0]
project_name = args.project_name
# no_ansi = args.no_ansi
Expand Down
1 change: 1 addition & 0 deletions tests/integration/filesystem/compose_symlink/file
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
data_compose_symlink
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: "3"
services:
container1:
image: nopush/podman-compose-test
command: ["/bin/busybox", "cat", "/file"]
volumes:
- "./file:/file"
1 change: 1 addition & 0 deletions tests/integration/filesystem/compose_symlink_dest/file
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
data_compose_symlink_dest
47 changes: 47 additions & 0 deletions tests/integration/filesystem/test_filesystem.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# SPDX-License-Identifier: GPL-2.0


import os
import unittest

from tests.integration.test_podman_compose import podman_compose_path
from tests.integration.test_podman_compose import test_path
from tests.integration.test_utils import RunSubprocessMixin


class TestFilesystem(unittest.TestCase, RunSubprocessMixin):
def test_compose_symlink(self):
"""The context of podman-compose.yml should come from the same directory as the file even
if it is a symlink
"""

compose_path = os.path.join(test_path(), "filesystem/compose_symlink/docker-compose.yml")

try:
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"up",
"-d",
"container1",
])

out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"logs",
"container1",
])

# BUG: figure out why cat is called twice
self.assertEqual(out, b'data_compose_symlink\ndata_compose_symlink\n')

finally:
out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"down",
])

0 comments on commit f0bae1e

Please sign in to comment.