Skip to content

CLI for docker not working #7

Description

@sugarfunk

⚠️ Please verify that this bug has NOT been reported before.

  • I checked and didn't find similar issue

🛡️ Security Policy

Description

appears to have a bug in how it spawns docker processes from within the Node.js application, even though the CLI itself is available and functional.

dockge  | 2025-10-22T20:53:14Z [SERVER] INFO: Welcome to dockge!
dockge  | 2025-10-22T20:53:14Z [SERVER] INFO: NODE_ENV: production
dockge  | 2025-10-22T20:53:14Z [SERVER] INFO: Server Type: HTTP
dockge  | 2025-10-22T20:53:14Z [SERVER] INFO: Data Dir: ./data/
dockge  | 2025-10-22T20:53:14Z [DB] INFO: Database Type: sqlite
dockge  | 2025-10-22T20:53:14Z [SERVER] INFO: Connected to the database
dockge  | 2025-10-22T20:53:14Z [SERVER] INFO: Listening on 5001
dockge  | 2025-10-22T20:53:15Z [AUTH] INFO: Origin is not set, IP: ::ffff:192.168.1.75
dockge  | 2025-10-22T20:53:15Z [SERVER] INFO: Socket connected (agent), as endpoint 192.168.1.85:5555
dockge  | 2025-10-22T20:53:15Z [AUTH] INFO: Login by username + password. IP=192.168.1.75
dockge  | 2025-10-22T20:53:15Z [RATE-LIMIT] INFO: remaining requests: 19
dockge  | 2025-10-22T20:53:15Z [AGENT-MANAGER] INFO: This connection is connected as an agent, skip connectAll()
dockge  | 2025-10-22T20:53:15Z [AUTH] INFO: Successfully logged in user USERNAME. IP=192.168.1.75
dockge  | 2025-10-22T20:53:16Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:53:18Z [AUTH] INFO: Origin is not set, IP: ::ffff:192.168.1.75
dockge  | 2025-10-22T20:53:18Z [SERVER] INFO: Socket connected (agent), as endpoint 192.168.1.85:5555
dockge  | 2025-10-22T20:53:18Z [AUTH] INFO: Login by username + password. IP=192.168.1.75
dockge  | 2025-10-22T20:53:18Z [RATE-LIMIT] INFO: remaining requests: 19
dockge  | 2025-10-22T20:53:18Z [AGENT-MANAGER] INFO: This connection is connected as an agent, skip connectAll()
dockge  | 2025-10-22T20:53:18Z [AUTH] INFO: Successfully logged in user USERNAME. IP=192.168.1.75
dockge  | 2025-10-22T20:53:19Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:53:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:53:21Z [SERVER] INFO: Socket disconnected!
dockge  | 2025-10-22T20:53:21Z [AUTH] INFO: Origin is not set, IP: ::ffff:192.168.1.75
dockge  | 2025-10-22T20:53:21Z [SERVER] INFO: Socket connected (agent), as endpoint 192.168.1.85:5555
dockge  | 2025-10-22T20:53:21Z [AUTH] INFO: Login by username + password. IP=192.168.1.75
dockge  | 2025-10-22T20:53:21Z [RATE-LIMIT] INFO: remaining requests: 18.983333333333334
dockge  | 2025-10-22T20:53:21Z [AGENT-MANAGER] INFO: This connection is connected as an agent, skip connectAll()
dockge  | 2025-10-22T20:53:21Z [AUTH] INFO: Successfully logged in user USERNAME. IP=192.168.1.75
dockge  | 2025-10-22T20:53:22Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:53:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:53:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:53:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:14Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:18Z [UPDATEIMAGEINFOS] ERROR: Stack 'immich' - Image 'ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a': Error: Process exited with code 1
dockge  | 2025-10-22T20:54:19Z [UPDATEIMAGEINFOS] ERROR: Stack 'immich' - Image 'docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11': Error: Process exited with code 1
dockge  | 2025-10-22T20:54:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:22Z [CHECKIMAGEUPDATES] INFO: Check for image updates finished.
dockge  | 2025-10-22T20:54:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:54:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:55:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:55:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:55:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:55:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:55:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:55:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:56:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:56:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:56:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:56:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:56:40Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:56:50Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:57:00Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:57:10Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:57:20Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }
dockge  | 2025-10-22T20:57:30Z [UPDATESTACKDATA] ERROR: Error: spawn docker ENOENT
dockge  |     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
dockge  |     at onErrorNT (node:internal/child_process:483:16)
dockge  |     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
dockge  |   errno: -2,
dockge  |   code: 'ENOENT',
dockge  |   syscall: 'spawn docker',
dockge  |   path: 'docker',
dockge  |   spawnargs: [ 'compose', 'ps', '--all', '--format', 'json' ]
dockge  | }

👟 Reproduction steps

installed as recommended

services:
  dockge:
    container_name: dockge
    image: hamphh/dockge
    restart: unless-stopped
    ports:
      # Host Port:Container Port
      - 5555:5001
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/USNERNAME/docker/dockge/data:/app/data
      - /home/USERNAME/docker/:/home/USERNAME/docker/
    environment:
      # Tell Dockge where is your stacks directory
      - DOCKGE_STACKS_DIR=/home/USERNAME/docker/
networks: {}

👀 Expected behavior

to check for updates

😓 Actual Behavior

error logs filled with above

Dockge Version

current/latest

💻 Operating System and Arch

Debian Trixie

🌐 Browser

Brave

🐋 Docker Version

No response

🟩 NodeJS Version

No response

📝 Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions