diff --git a/docker-compose.yml b/docker-compose.yml index f1c783b..62b9621 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,12 +10,11 @@ services: - /dev:/dev - /sys:/sys:ro - /run/udev:/run/udev:ro - - /usr/sbin/zpool:/usr/sbin/zpool:ro - - /usr/sbin/zfs:/usr/sbin/zfs:ro - - /usr/lib/libzfs.so.6:/usr/lib/libzfs.so.6:ro - - /usr/lib/libnvpair.so.3:/usr/lib/libnvpair.so.3:ro - - /usr/lib/libuutil.so.3:/usr/lib/libuutil.so.3:ro - - /usr/lib/libzfs_core.so.3:/usr/lib/libzfs_core.so.3:ro + - /usr/sbin/zpool:/host/zpool:ro + - /usr/sbin/zfs:/host/zfs:ro + - /lib/x86_64-linux-gnu:/host/lib:ro environment: - TZ=America/Denver - UVICORN_LOG_LEVEL=info + - ZPOOL_BIN=/host/zpool + - LD_LIBRARY_PATH=/host/lib diff --git a/services/zfs.py b/services/zfs.py index c0aee1d..55394e3 100644 --- a/services/zfs.py +++ b/services/zfs.py @@ -4,6 +4,9 @@ import logging logger = logging.getLogger(__name__) +# Allow overriding the zpool binary path via env (for bind-mounted host tools) +ZPOOL_BIN = os.environ.get("ZPOOL_BIN", "zpool") + async def get_zfs_pool_map() -> dict[str, str]: """Return a dict mapping device names to ZFS pool names. @@ -13,7 +16,7 @@ async def get_zfs_pool_map() -> dict[str, str]: pool_map = {} try: proc = await asyncio.create_subprocess_exec( - "zpool", "status", "-P", + ZPOOL_BIN, "status", "-P", stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, )