containers / podman-compose

a script to run docker-compose.yml using podman
GNU General Public License v2.0
5.01k stars 477 forks source link

Error mount volume /run/podman/podman.sock:/var/run/docker.sock becomes E:\run\podman\podman.sock:/var/run/docker.sock:Z #704

Open SamLowryMOI opened 1 year ago

SamLowryMOI commented 1 year ago

Describe the bug I try to use portainer. On podman-compose up -d - /run/podman/podman.sock:/var/run/docker.sock in docker-compose.yml becomes -v E:\run\podman\podman.sock:/var/run/docker.sock:Z

To Reproduce docker-compose.yml on E:\Docker\portainer

version: '3'

services:
  portainer:
    image: portainer/portainer-ce:alpine
    restart: unless-stopped
    container_name: portainer_master
    ports:
      - 13000:9000
      - 13443:9443
      - 8000:8000
    volumes:
      - /run/podman/podman.sock:/var/run/docker.sock:Z
      - ./portainer_data:/data

Output

E:\Docker\portainer>dir /s
 Datenträger in Laufwerk E: ist Data
 Volumeseriennummer: XXXX-XXXX

  Verzeichnis von E:\Docker\portainer

07.06.2023  22:35    <DIR>          .
07.06.2023  22:35    <DIR>          ..
07.06.2023  22:21               563 docker-compose.yml
07.06.2023  22:23    <DIR>          portainer_data
               1 Datei(en),            563 Bytes

 Verzeichnis von E:\Docker\portainer\portainer_data3

07.06.2023  22:35    <DIR>          .
07.06.2023  22:35    <DIR>          ..
               0 Datei(en),              0 Bytes
[...]

E:\Docker\portainer>podman-compose version
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.5.1
podman-compose version 1.0.6
podman --version
podman version 4.5.1
exit code: 0

E:\Docker\portainer>podman-compose up -d
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.5.1
** excluding:  set()
['podman', 'ps', '--filter', 'label=io.podman.compose.project=portainer', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
['podman', 'network', 'exists', 'portainer_default']
podman run --name=portainer_master -d --label io.podman.compose.config-hash=b6cb472448eb77b83f6c603f2a45a7a84950f188329304b3cf70f2a98fecb485 --label io.podman.compose.project=portainer --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@portainer.service --label com.docker.compose.project=portainer --label com.docker.compose.project.working_dir=E:\Docker\portainer --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=portainer 

??? ---> -v E:\run\podman\podman.sock:/var/run/docker.sock:Z  <--- ???

-v E:\Docker\portainer\portainer_data:/data 
--net portainer_default --network-alias portainer -p 13000:9000 -p 13443:9443 -p 8000:8000 --restart unless-stopped portainer/portainer-ce:alpine
6686387ecfced5ab269d403637ef2b8572ad0a466c15c1500be78e15f76d97ef
exit code: 0

Please make sure it's not a bug in podman (in that case report it to podman) If i use

podman run -d -p13000:9000 -p 13443:9443 -p8000:8000 --name portainer_master -v /run/podman/podman.sock:/var/run/docker.sock:Z -v E:\Docker\portainer\portainer_data:/data portainer/portainer-ce

on the command line everything works fine.

please try to reproduce the bug in latest devel branch Sorry, don't know how.

Expected behavior

-v \run\podman\podman.sock:/var/run/docker.sock:Z

instead of

Actual behavior

-v E:\run\podman\podman.sock:/var/run/docker.sock:Z

Environment:

acotty commented 7 months ago

Hit the same issue.

My docker-compose.yml line: run/podman/podman.sock:/var/run/docker.sock:Z

becomes -v D:\run\podman\podman.sock:/var/run/docker.sock:Z

$ podman-compose --version podman-compose version: 1.0.7 ['podman', '--version', ''] using podman version: 4.9.2 podman-compose version 1.0.7 podman --version podman version 4.9.2 exit code: 0

I installed the latest dev using: pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

My OS is Windows 11. Above was using the ancient windows command.exe. The same issue occurs with the Msys2 dev environment (native bash shell).

acotty commented 7 months ago

Quick fix is to edit the C:\Python\Lib\site-packages\podman_compose.py and add the check for windows at line 170 as follows: if os.name != 'nt' or (os.name == 'nt' and ".sock" not in mount_src): mount_src = os.path.abspath(os.path.join(basedir, os.path.expanduser(mount_src)))