Repository navigation
Conversation
`docker-compose.yml` bind-mounted a hardcoded /var/run/docker.sock into the `floci` and `floci-gcp` services. That path only exists when a Docker daemon is running, so on a host with only rootless Podman, `podman-compose up` fails: Error: statfs /var/run/docker.sock: no such file or directory Error: "floci-ui_floci_1" is not a valid container, cannot be used as a dependency Podman refuses to create a container whose mount source is missing, so `floci` never gets created and `floci-api` then fails its depends_on check. Docker instead silently creates an empty directory, which is why this went unnoticed. Read the path from FLOCI_CONTAINER_SOCKET, defaulting to /var/run/docker.sock so Docker users are unaffected, and document the Podman override in the README and .env.example.
|
| # Default is the Docker socket. Podman users, who have no Docker daemon and so | ||
| # no /var/run/docker.sock, override it in .env: | ||
| # FLOCI_CONTAINER_SOCKET=$XDG_RUNTIME_DIR/podman/podman.sock | ||
| - ${FLOCI_CONTAINER_SOCKET:-/var/run/docker.sock}:/var/run/docker.sock |
There was a problem hiding this comment.
Rootless socket may be inaccessible If the host user's Podman socket does not permit access by the Floci runtime, which runs as UID 1001, changing the mount source alone will not let Floci connect to it. The stack can start, but Lambda invocations will still fail to start containers. The Podman setup needs to account for socket access as well as its path.
|
Thank you, @esmaeelE, for tracking this down and for including the exact Podman error. (blocking) The last sentence of the new Podman section ("Without it the emulator still starts...") contradicts the paragraph above it, which says podman-compose up fails when the default socket is missing. Would you reword it to describe that create error? (follow-up, in this PR if you are willing) The description still has the empty template. A line in Verification naming your Podman version and what you ran would help the next Podman user. (follow-up, separate PR) Rootless socket access and host prerequisites are tracked in #293. No blockers from my side. |
The closing sentence claimed the emulator still started without the socket override, which contradicted the paragraph above it describing the `podman-compose up` failure. Reword it to describe the actual container-create error instead.
|
Thanks for the review. Two follow-ups addressed:
Leaving the rootless-socket-access thread for #293 / a separate PR as you suggested. |
Summary
docker-compose.ymlbind-mounted a hardcoded/var/run/docker.sockinto theflociandfloci-gcpservices. That path only exists when a Docker daemon is running, so on a host with only rootless Podman,podman-compose upfails:Podman refuses to create a container whose mount source is missing, so
flocinever gets created andfloci-apithen fails itsdepends_oncheck. Docker instead silently creates an empty directory, which is why this went unnoticed.This PR reads the path from
FLOCI_CONTAINER_SOCKET, defaulting to/var/run/docker.sockso Docker users are unaffected, and documents the Podman override in the README and.env.example.Type of change
feat:)Area
Verification
Tested on Debian 13 (trixie), Podman 5.4.2 + podman-compose 1.3.0, rootless, no Docker daemon installed.
podman-compose up -d --build— exit 0; UI:4500200, API:4501/api/clouds/aws/services200, Floci:4566200, storage returns real seeded buckets.podman-compose --profile multicloud up -d --build— exit 0; AWS/Azure/GCP/OCI statuses allruntime: reachable; seed job completed ("Multi-cloud seed done"); floci spawned a realpostgres:16.3-alpinesidecar through the mounted socket, confirming the API socket is usable.pnpm lint,pnpm type-check,pnpm test(1,557 tests),pnpm build— all pass.Checklist
pnpm lint,pnpm type-check,pnpm test, andpnpm buildpass locally