Skip to content

extends -> file used more than once does not work in podman-compose correctly for 2nd and next services #465

@diodakus

Description

@diodakus

Describe the bug
When docker-compose.yml use extends tag what loads config by file tag from docker-compose-general.yml file for first service from docker-compose.yml - sh works well, but for second ci-dev-sh not. It means that incorrectly recognize docker image for second service - ci-dev-sh and does not inherit mounts from sh.

To Reproduce
Steps to reproduce the behavior:

  1. create docker-compose.yml file with content:
version: '3.5'
services:
  sh:
    extends:
      file: docker-compose-general.yml
      service: sh2

  ci-dev-sh:
    extends:
      file: docker-compose-general.yml
      service: ci-dev-sh2
  1. create docker-compose-general.yml file with content:
services:
  sh2:
    command: [/bin/sh]
    image: busybox
    volumes:
      - /tmp/service_sh:/tmp/service_sh:rw

  ci-dev-sh2:
    extends:
      service: sh2
    volumes:
      - /tmp/service_ci-dev-sh:/tmp/service_ci-dev-sh:rw
  1. run 1st command: podman-compose run --rm sh sh
  2. run 2nd command: podman-compose run --rm ci-dev-sh sh

1st command works as expected - started sh service:
podman run --name=slawek_sh_tmp50285 --rm -i --pod=pod_slawek --label io.podman.compose.config-hash=ff28310f0c2bb389c418e1a834ea9801adacc3f014ac99dabed617361ca2278f --label io.podman.compose.project=slawek --label io.podman.compose.version=1.0.4 --label com.docker.compose.project=slawek --label com.docker.compose.project.working_dir=/home/slawek --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=sh -v /tmp/service_sh:/tmp/service_sh:rw --net slawek_default --network-alias sh --tty busybox sh

Expected behavior for 2nd command
podman run --name=slawek_ci-dev-sh_tmp43794 --rm -i --pod=pod_slawek --label io.podman.compose.config-hash=ff28310f0c2bb389c418e1a834ea9801adacc3f014ac99dabed617361ca2278f --label io.podman.compose.project=slawek --label io.podman.compose.version=1.0.4 --label com.docker.compose.project=slawek --label com.docker.compose.project.working_dir=/home/slawek --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=ci-dev-sh -v /tmp/service_sh:/tmp/service_sh:rw -v /tmp/service_ci-dev-sh:/tmp/service_ci-dev-sh:rw --net slawek_default --network-alias ci-dev-sh --tty busybox sh

  1. Expected docker image busybox.
  2. Expected mount inherited from sh service: -v /tmp/service_sh:/tmp/service_sh:rw.

Actual behavior for 2nd command
podman run --name=slawek_ci-dev-sh_tmp43794 --rm -i --pod=pod_slawek --label io.podman.compose.config-hash=ff28310f0c2bb389c418e1a834ea9801adacc3f014ac99dabed617361ca2278f --label io.podman.compose.project=slawek --label io.podman.compose.version=1.0.4 --label com.docker.compose.project=slawek --label com.docker.compose.project.working_dir=/home/slawek --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=ci-dev-sh -v /tmp/service_ci-dev-sh:/tmp/service_ci-dev-sh:rw --net slawek_default --network-alias ci-dev-sh --tty slawek_ci-dev-sh sh

  1. Bad docker image. Is: slawek_ci-dev-sh, should be: busybox
  2. Missing mount -v /tmp/service_sh:/tmp/service_sh:rw - looks like not inherited from service sh.

Output

$ podman-compose version # Version from 29.03.2022
podman-compose version: 1.0.4
['podman', '--version', '']
using podman version: 3.4.2
podman-composer version 1.0.4
podman --version 
podman version 3.4.2
exit code: 0

Environment:

  • OS: Rocky Linux release 8.5 (Green Obsidian)
  • podman version: 3.4.2
  • podman compose version: (git hex) fbff315

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions