podman-compose
podman-compose copied to clipboard
fails to launch examples when on a mac
Describe the bug
When running a few examples, I always see errors. I am on a mac so presume it is related to podman machine
not supporting mounts yet:
- https://github.com/containers/podman/issues/8016
To Reproduce Steps to reproduce the behavior:
- git clone [email protected]:docker/awesome-compose.git
- cd awesome-compose/react-java-mysql
- podman-compose up -d
- see error1
error1
['podman', '--version', '']
using podman version: 3.4.1
Traceback (most recent call last):
File "/usr/local/bin/podman-compose", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/podman_compose.py", line 1763, in main
podman_compose.run()
File "/usr/local/lib/python3.9/site-packages/podman_compose.py", line 1035, in run
self._parse_compose_file()
File "/usr/local/lib/python3.9/site-packages/podman_compose.py", line 1129, in _parse_compose_file
flat_deps(services, with_extends=True)
File "/usr/local/lib/python3.9/site-packages/podman_compose.py", line 856, in flat_deps
deps.update(deps_ls)
TypeError: unhashable type: 'dict'
- cd ../traefik-golang
- podman-compose up -d
- see error2
['podman', '--version', '']
using podman version: 3.4.1
** excluding: set()
['podman', 'inspect', '-t', 'image', '-f', '{{.Id}}', 'traefik-golang_backend']
Error: error inspecting object: unable to inspect "traefik-golang_backend": failed to find image traefik-golang_backend: traefik-golang_backend: image not known
podman build -t traefik-golang_backend -f backend/Dockerfile backend
Error: stat /var/tmp/libpod_builder760979102/build/tmp/awesome-compose/traefik-golang/backend/Dockerfile: no such file or directory
exit code: 125
podman pod create --name=traefik-golang --share net --infra-name=traefik-golang_infra -p 80:80
523af1cb757340040a45017fcdbeeabff21f43c226c5f462e423afcb9a5db22a
exit code: 0
podman run --name=traefik-golang_backend_1 -d --pod=traefik-golang --label traefik.enable=true --label traefik.http.routers.go.rule=Path(`/`) --label traefik.http.services.go.loadbalancer.server.port=80 --label io.podman.compose.config-hash=123 --label io.podman.compose.project=traefik-golang --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=traefik-golang --label com.docker.compose.project.working_dir=/private/tmp/awesome-compose/traefik-golang --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=backend --add-host frontend:127.0.0.1 --add-host traefik-golang_frontend_1:127.0.0.1 --add-host backend:127.0.0.1 --add-host traefik-golang_backend_1:127.0.0.1 traefik-golang_backend
Error: short-name resolution enforced but cannot prompt without a TTY
exit code: 125
podman start traefik-golang_backend_1
Error: no container with name or ID "traefik-golang_backend_1" found: no such container
exit code: 125
podman run --name=traefik-golang_frontend_1 -d --pod=traefik-golang --label io.podman.compose.config-hash=123 --label io.podman.compose.project=traefik-golang --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=traefik-golang --label com.docker.compose.project.working_dir=/private/tmp/awesome-compose/traefik-golang --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=frontend -v /var/run/docker.sock:/var/run/docker.sock --add-host frontend:127.0.0.1 --add-host traefik-golang_frontend_1:127.0.0.1 --add-host backend:127.0.0.1 --add-host traefik-golang_backend_1:127.0.0.1 traefik:2.2 --providers.docker --entrypoints.web.address=:80 --providers.docker.exposedbydefault=false
Error: short-name resolution enforced but cannot prompt without a TTY
exit code: 125
podman start traefik-golang_frontend_1
Error: no container with name or ID "traefik-golang_frontend_1" found: no such container
exit code: 125
Expected behavior It works or the docs call out that Mac as not supported
Actual behavior It doesn't work
Output
$ podman-compose version
['podman', '--version', '']
using podman version: 3.4.1
podman-composer version 0.1.8
podman --version
podman version 3.4.1
exit code: 0
the yaml contains lines like this
depends_on:
db:
condition: service_healthy
this is currently not supported, change it to
depends_on:
- db
@muayyad-alsadi ; is there any docs for what is/isn't supported? as obviously, I am trying to use out-of-the-box docker-compose examples without changes, so if podman-compose isn't read for that, I'll just wait.
@garethahealy it's supposed to be fixed in the latest 1.x, please upgrade and test.
@muayyad-alsadi ; so the errors have changed to:
podman-compose up -d
['podman', '--version', '']
using podman version: 3.4.4
** excluding: set()
['podman', 'inspect', '-t', 'image', '-f', '{{.Id}}', 'react-java-mysql_backend']
Error: error inspecting object: unable to inspect "react-java-mysql_backend": failed to find image react-java-mysql_backend: react-java-mysql_backend: image not known
podman build -t react-java-mysql_backend -f backend/Dockerfile backend
Error: stat /var/tmp/libpod_builder316953034/build/tmp/awesome-compose/react-java-mysql/backend/Dockerfile: no such file or directory
exit code: 125
which is related to: https://github.com/containers/podman/issues/8016
Any update on the service_healthy depends_on feature being implemented in podman-compose? I have the latest devel installed (as of the writing of this) and when using depends_on with a health check, it is not honored. The dependent container is started while the independent container is still in a starting state.
version: "3"
services:
db:
image: mariadb
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
timeout: 20s
retries: 10
volumes:
- ./mariadb:/var/lib/mysql/data
environment:
- MYSQL_DATABASE=${DATABASE_NAME:-testdb}
- MYSQL_USER=${DATABASE_USER:-testuser}
- MYSQL_PASSWORD=${DATABASE_PASSWORD:-testpw}
- MYSQL_ROOT_PASSWORD=password
ports:
- "3306:3306"
app1:
image: busybox
command: httpd -f -p 8080 -h /etc/
depends_on:
db:
condition: service_healthy
$ while [ true ]; do podman ps; sleep 3; done
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd99f01f030e docker.io/library/mariadb:latest mariadbd 3 seconds ago Up Less than a second ago (starting) 0.0.0.0:3306->3306/tcp test-compose_db_1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd99f01f030e docker.io/library/mariadb:latest mariadbd 6 seconds ago Up 3 seconds ago (starting) 0.0.0.0:3306->3306/tcp test-compose_db_1
c72b53fad7fa docker.io/library/busybox:latest httpd -f -p 8080 ... 4 seconds ago Up 2 seconds ago test-compose_app1_1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd99f01f030e docker.io/library/mariadb:latest mariadbd 9 seconds ago Up 6 seconds ago (starting) 0.0.0.0:3306->3306/tcp test-compose_db_1
c72b53fad7fa docker.io/library/busybox:latest httpd -f -p 8080 ... 8 seconds ago Up 5 seconds ago test-compose_app1_1
this is implemented in this pending pull request
https://github.com/containers/podman-compose/pull/453
I've not merged it yet.
Do you anticipate PR 453 being merged soon?
Yes, I would love to merge it. I just need to review it.